削除後の自動無効化: なぜしないのか?
削除操作の実行後にポインタを自動的に NULL に設定することは、以前から行われてきました。プログラマーにとっての議論のテーマ。この措置により、無効なポインタによって引き起こされるクラッシュの発生が大幅に減少すると多くの人が主張しています。しかし、C 標準ではこのアプローチが採用されていないため、ユーザーはこの決定の背後にある理由に興味を持っています。
C の作成者である Bjarne Stroustrup 氏によると、自動ポインタ無効化の除外にはいくつかの要因があるとのことです。 :
パフォーマンスに関する考慮事項:
ポインターをゼロにする追加命令を導入すると、特にパフォーマンスが重要なシナリオでは、削除操作の全体的なパフォーマンスに影響を与える可能性があります。
Const ポインタ:
Const ポインタは、変更できないメモリ位置を参照します。 const オブジェクトの内容の変更は許可されていないため、このようなポインターを自動的に NULL に設定すると、未定義の動作が発生する可能性があります。
ただし、Stroustrup 氏は、const ポインターの特殊な処理によってこれらの懸念に対処できた可能性があることも認めました。
標準では、右辺値 (一時オブジェクト) の削除操作が許可されていますが、これをゼロにすることはできません。言語自体によって課せられるこの技術的制限は、自動ポインター無効化に対するもう 1 つの障害となります。
以上がC が削除後にポインタを自動的に NULL に設定しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。