gpt4 book ai didi

perl - 为什么 Perl 会按照这种模式重新分配内存?

转载 作者:行者123 更新时间:2023-12-04 20:54:49 24 4
gpt4 key购买 nike

匿名数组的内存地址自然会被 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)

是什么导致了内存管理的这种特殊性?

最佳答案

当 SV 被释放时,它们实际上被放入一个“空闲”池中。也许他们进入池的顺序会影响他们退出的顺序。

关于perl - 为什么 Perl 会按照这种模式重新分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com