Использует мои% данные; ниже нормально, или я должен переключиться на мои $ 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; (быстрее, потому что предварительно выделено компилятором?) или my $ data = {}; ?