削除でポインターに NULL が自動的に割り当てられないのはなぜですか?
C 言語標準では、ポインター値の NULL への自動設定は義務付けられていません。削除演算子を呼び出した後。これは直観に反するように思えるかもしれませんが、この決定にはいくつかの理由があります。
パフォーマンス
質問で述べたように、ポインターを NULL に設定する追加の命令は潜在的に可能性があります。特にパフォーマンスが重要なコードにおいて、削除操作のパフォーマンスに影響を与えます。
Const Pointers
もう 1 つの潜在的な問題は、一部のポインターが const として宣言される可能性があることです。これらのポインターの場合、削除操作後に値を変更しようとすることはできません。このようなポインターについては特別なケースを作成できるという議論もあるかもしれませんが、標準では、すべての場合においてポインター値を変更しないことで一貫性を維持することを選択しました。
非左辺値引数
削除演算子は、右辺値参照などの非左辺値引数を受け入れることができます。これらのシナリオでは、ポインターの値を変更することはできません。これは、すべての引数型の動作の一貫性を確保するために、標準に技術的な制限を課します。
Bjarne Stroustrup の説明
C の作成者である Bjarne Stroustrup がこれに対処しました。問題:
したがって、C でポインターを削除しても自動的に NULL に設定されませんが、標準ではパフォーマンス、const ポインター、非左辺値引数、およびこの決定に到達するための一貫性。
以上がC で「delete」を実行するとポインタが自動的に NULL に設定されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。