C で 'this' を削除した後に使用するのが非常に危険なのはなぜですか?

Linda Hamilton
リリース: 2024-11-18 09:18:02
オリジナル
506 人が閲覧しました

Why is Using

削除後に "this" を使用する場合の落とし穴

C の FAQ では、"delete this" を呼び出した後に "this" ポインターにアクセスしないように警告しています。 」と、調査、比較、印刷、キャストの禁止など4つの制限を挙げている。しかし、この一見無害に見えるデータがなぜそれほど危険なのでしょうか?

問題の核心は、「this」を削除した後に起こる未定義の動作にあります。 「this」を削除すると、事実上、現在のオブジェクトの割り当てが解除され、「this」ポインタが無効になります。このポインターに関係する後続の操作は予測できなくなります。

「this」を整数にキャストしたり、printf() を使用してその値を出力したくなるかもしれませんが、C 標準ではこれらの操作の動作は保証されていません。コンパイラは、初期化されていないメモリへのアクセスやハード ドライブの破損など、これらのアクションを任意の方法で自由に解釈できます。

この問題を回避するには、削除する前に「this」ポインタのコピーを整数として作成することを検討してください。それ。これにより、未定義の動作を呼び出すことなく、将来の使用に備えてポインターの値を保存できます。

以上がC で 'this' を削除した後に使用するのが非常に危険なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート