4
$a=\$a;

私が読んでいる本によると、この場合$aは決して自由になることはありません.私の質問は、perl インタープリターがコンパイル時に修正しないのはなぜですか?自分自身を指していることが判明した場合は、refcount を増やさないでください。

なぜperlはそれをしないのですか?

4

1 に答える 1

6

一部のガベージ コレクタには循環検出機能があります。Perl は、パフォーマンスと歴史的な理由から、そうではありません。参照カウントに影響を与えない参照が必要な場合は、 を使用Scalar::Util::weakenして弱い参照を取得できます。これにより、依存する必要があるほとんどの状況でサイクル検出が不要になります。弱い参照か強い参照かを自動的に検出するには、インタープリターに組み込まれたサイクル検出が必要になるため、明示的に行うだけで済みます。\$a

于 2011-06-23T03:31:21.283 に答える