ラベル付きのgoto
を使用するとメモリリークが発生する可能性がありますか?私は、関連すると思われるdocumentation for goto
で見つかったすべてがある:`goto LABEL`はメモリリークを引き起こしますか?
goto LABEL
フォームは標識で標識された文を見つけだし、そこから実行を再開します。
goto LABEL
は安全ですか?テストの1分後、答えがあるように思わ
ラベル付きのgoto
を使用するとメモリリークが発生する可能性がありますか?私は、関連すると思われるdocumentation for goto
で見つかったすべてがある:`goto LABEL`はメモリリークを引き起こしますか?
goto LABEL
フォームは標識で標識された文を見つけだし、そこから実行を再開します。
goto LABEL
は安全ですか?テストの1分後、答えがあるように思わ
:はいなし(下記の更新を参照)
これが実行されている間top
を見て、%MEM
は絶えず
{
THIS:
my $x = 1;
goto THIS;
}
これはありませんをインクリメント同じ増分を示さない%MEM
カウンタ
while (1) {
my $x = 1;
}
更新
質問に間違いがありました。私の質問には、メモリがgoto
を使ってそのレキシカルスコープにすでに存在していたレキシカル変数に割り当てられるかどうかということでした。私のテストはyesと言えそうです。厳密に言うと、これはメモリリークではありません。 perlがこのレキシカルスコープを終了すると、割り当てられたスペースが解放されます。
http://www.perlmonks.org/?node_id=1159029助けてください – Dada
Perlでは、手作業で削除する循環依存関係(つまり、自分自身を指し示すものへの参照)を作成しない場合は、すべて現在のスコープが終了するとクリーンアップされます(自動ガベージコレクション)。最終的なスコープはスクリプトファイルそのものです。 – stevieb
すべては、私は 'goto'(それはかなり簡単です)を必要としない方法でコードを構造化することをお勧めしたいと思います。ループの中にあれば、 'next'と' last'があります。 – stevieb