削除後に "this" を使用する場合の落とし穴
C の FAQ では、"delete this" を呼び出した後に "this" ポインターにアクセスしないように警告しています。 」と、調査、比較、印刷、キャストの禁止など4つの制限を挙げている。しかし、この一見無害に見えるデータがなぜそれほど危険なのでしょうか?
問題の核心は、「this」を削除した後に起こる未定義の動作にあります。 「this」を削除すると、事実上、現在のオブジェクトの割り当てが解除され、「this」ポインタが無効になります。このポインターに関係する後続の操作は予測できなくなります。
「this」を整数にキャストしたり、printf() を使用してその値を出力したくなるかもしれませんが、C 標準ではこれらの操作の動作は保証されていません。コンパイラは、初期化されていないメモリへのアクセスやハード ドライブの破損など、これらのアクションを任意の方法で自由に解釈できます。
この問題を回避するには、削除する前に「this」ポインタのコピーを整数として作成することを検討してください。それ。これにより、未定義の動作を呼び出すことなく、将来の使用に備えてポインターの値を保存できます。
以上がC で 'this' を削除した後に使用するのが非常に危険なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。