Joh*_*Loo 1 memory perl reference
想象一下,我有一个指向包含许多无限数组的数组的引用.例如:
my @main_array = ( [1,2,3], [3,4,5], ['a','b','c'] );
my $reference = \@main_array
Run Code Online (Sandbox Code Playgroud)
如果以后我已经完成了使用该数组中的数据并且我只引用了它,那么删除该数组并释放内存的最佳方法是什么?我通常会执行以下操作以释放数据在简单数组中使用的内存:
undef @array
Run Code Online (Sandbox Code Playgroud)
但因为我只提到它,所以我想这样做
undef @{$reference}
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我不会只是删除存储在array(main_array
)中的匿名数组的引用而不是匿名数组的实际内容吗?
我想我的问题可以简化为:删除引用会使Perl释放由引用引用的数组,散列或标量所使用的内存吗?
谢谢
是的,undef @{$reference}
(或undef @$reference
)会做的undef @array
.它将释放阵列使用的几乎所有内存,以便程序可以重用.
但是很少有任何理由这样做.当你的词汇$reference
超出范围时,同样的事情也会发生.首先明确地调用undef
它只会让你的代码慢一点.
归档时间: |
|
查看次数: |
437 次 |
最近记录: |