使用中my%data;は大丈夫ですか?my $ 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;(コンパイラによって事前に割り当てられているため、高速ですか?)またはmy $ data = {};?
私はそれが単なる例だと考えていますが、純粋な数字キーを0から始まり順番に実行することはほとんど役に立たないと思いました。言い換えれば、$ data {games}の値は配列としての方が優れています - '[['、' '' '']]' ...もちろん、必要なJSON構造作ることは固定されています。 ) – raina77ow