正在使用我的 %data; 下面还可以,或者我应该切换到我的 $data={}; ?
#!/usr/bin/perl -wT
use strict;
use JSON;
sub makeJson {
my %data;
$data{kib} = 1;
$data{games} = {
0 => [],
1 => [qw(a b c d e)],
};
return \%data;
}
my $x = makeJson();
print encode_json($x) . "\n";
我很困惑,因为——
如果makeJson()被多次调用 - 和my %data; 在堆栈中分配,然后返回该地址-这不是内存泄漏还是可能不是“泄漏”,而是“问题”?因为在堆栈上会分配内存,它仍然被引用,因此不能被释放。
和其他方式:如果我有一个返回哈希引用的子程序,最好使用我的 %data; (更快,因为编译器预先分配?)或我的 $data={}; ?