匿名數組的內存地址自然被perl重用。這個例子說明,他們兩個地址之間的週期爲空數組:爲什麼Perl會按照這種模式重新分配內存?
$ perl -E "say [] for (1..6)"
ARRAY(0x37b23c)
ARRAY(0x37b28c)
ARRAY(0x37b23c)
ARRAY(0x37b28c)
ARRAY(0x37b23c)
ARRAY(0x37b28c)
我想到了爲什麼它不能立即重新分配內存的一些理論,當我發現週期並不總是兩個地址長。以下示例的週期爲3和4.
$ perl -E "say [0] for (1..6)"
ARRAY(0x39b23c)
ARRAY(0x39b2ac)
ARRAY(0x39b28c)
ARRAY(0x39b23c)
ARRAY(0x39b2ac)
ARRAY(0x39b28c)
$ perl -E "say [0,0] for (1..6)"
ARRAY(0x64b23c)
ARRAY(0x64b2cc)
ARRAY(0x64b2ac)
ARRAY(0x64b28c)
ARRAY(0x64b23c)
ARRAY(0x64b2cc)
是什麼導致了這種內存管理特性?
你爲什麼在意? – 2011-04-23 15:49:40
@Jonathan,我在執行模微積分;) 好奇心。 – Tim 2011-04-23 15:52:26
您應該閱讀'perldoc perlguts'並加入Perl Porters的郵件列表http://lists.perl.org/list/perl5-porters.html – shawnhcorey 2011-04-23 17:04:03