gpt4 book ai didi

perl - 释放多级哈希的内存

转载 作者:行者123 更新时间:2023-12-02 08:58:08 25 4
gpt4 key购买 nike

假设我有一个多级哈希:

$class->{'key1'}->{'key2'}->{$key3}->{'string'}->{$key5},
where $class->{'key1'}->{'key2'}->{$key3}->{'string'}->{$key5}
equals to some integer number.
$key3 can be class name like "music", "english"...
$key5 can be student name like "mary", "luke"...

下面的操作会释放$key3="music"级别下的所有内存吗?即分配给$key5的内存会被释放吗?

$current_class = $class->{'key1'}->{'key2'}->{"music"};
$current_class = undef;

更新:

谢谢两位。我对deleteundef的理解是:delete会删除key='music'

所以 $class->{'key1'}->{'key2'}->{"music"} 将不存在。而 undef 会将 $class->{'key1'}->{'key2'}->{"music"} 的值设置为 undef.但是 key='music' 的条目仍然存在,但它的值将是 undef 所以 $class->{'key1'}->{' key2'}->{"music"} = undef

所以我应该删除该条目,正确吗?

但你的意思是

undef $class->{'key1'}->{'key2'}->{"music"};

$class->{'key1'}->{'key2'}->{"music"} = undef;

有什么不同吗?

最佳答案

没有。一般来说,标量赋值是按值复制的。要释放对此对象内存的引用,您必须说类似

$class->{'key1'}->{'key2'}->{"music"} = undef;       # 2nd,3rd --> are optional
delete $class->{'key1'}{'key2'}{"music"};

undef 分配给适当的引用也可以。

$current_class_ref = \$class->{'key1'}{'key2'}{"music"};
$$current_class_ref = undef;

关于perl - 释放多级哈希的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3340466/

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