【发布时间】:2017-03-23 01:20:58
【问题描述】:
想象一下,我有一个指向包含许多匿名数组的数组的引用。例如:
my @main_array = ( [1,2,3], [3,4,5], ['a','b','c'] );
my $reference = \@main_array
如果稍后我使用完该数组中的数据并且我只有一个引用,那么删除该数组并释放内存的最佳方法是什么? 我通常执行以下操作来释放简单数组中数据使用的内存:
undef @array
但因为我只有一个参考,所以我考虑这样做
undef @{$reference}
如果我这样做,我会不会只是删除对存储在数组 (main_array) 中的匿名数组的引用而不是匿名数组的实际内容?
我想我的问题可以简化为:删除引用是否会使 Perl 释放引用所引用的数组、散列或标量使用的内存?
谢谢
【问题讨论】:
-
“我通常会执行以下操作来释放简单数组中数据使用的内存:
undef @array” 请不要这样做。这通常是没有意义和不必要的。