加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:34:24 所属栏目:大数据 来源:网络整理
导读:perl自然会重用匿名数组的内存地址.如此示例所示,它们在两个地址之间循环以获取空数组: $perl -E "say [] for (1..6)"ARRAY(0x37b23c)ARRAY(0x37b28c)ARRAY(0x37b23c)ARRAY(0x37b28c)ARRAY(0x37b23c)ARRAY(0x37b28c) 我想出了为什么它不能立即重新分配内存
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被释放时,它们实际上被放入“免费”池中.也许他们进入游泳池的顺序会影响他们退出的顺序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读