ホームページ > バックエンド開発 > C++ > C で「これを削除」した後に「これ」にアクセスすることが厳しく禁止されているのはなぜですか?

C で「これを削除」した後に「これ」にアクセスすることが厳しく禁止されているのはなぜですか?

Susan Sarandon
リリース: 2024-11-12 20:50:02
オリジナル
1034 人が閲覧しました

Why is accessing

「これを削除」の未定義の結果に注意してください。値の検査は禁止されています

C で "delete this" 構造を使用する場合、C の FAQ では、その後 "this" ポインターにアクセスしたり操作したりしないよう強く推奨しています。この制限の理由は、FAQ で概説されている前の 3 つの理由を超えています:

制限の理由 4: 「delete this」を呼び出した後の「this」の値は本質的に未指定および未定義です。 。したがって、それ以降の対話の試行 (以下を含むがこれらに限定されない) は、未定義の動作を呼び出すことが保証されます:

  • 検査または検査
  • 他のポインターまたは NULL との比較
  • 値の印刷または出力
  • 再解釈キャスト
  • あらゆる形式の操作

制限を無視した場合の潜在的な結果:

一部のコンパイラは、この特定のインスタンスでの未定義の動作を予測可能な方法で処理する可能性がありますが、保証はありません。 C 仕様では、未定義のアクションを実行する際の動作をコンパイラーが決定できるように明示的に許可されています。これにより、データの破損や完全なシステム障害などの奇妙な、あるいは壊滅的な結果が生じる可能性があります。

安全な代替案:

この制限を回避するには、 「delete this」を呼び出す前に「this」ポインタのコピーを(整数などで)作成し、削除後も元のポインタの値がアクセス可能で予測可能であることを保証することをお勧めします。

以上がC で「これを削除」した後に「これ」にアクセスすることが厳しく禁止されているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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