%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={}; ?