ホームページ >バックエンド開発 >C++ >C で「delete this」の後に「this」を使用するのはなぜ悪い考えなのでしょうか?

C で「delete this」の後に「this」を使用するのはなぜ悪い考えなのでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-14 12:47:02824ブラウズ

Why is Using

「delete this」後の「this」の危険

C での「delete this」構造の使用法がないわけではありません。落とし穴。その使用に対する最初の 3 つの制限は理解できますが、値の検査やその他のアクションの実行に対する 4 番目の制限は複雑に思えるかもしれません。結局のところ、これは単なるポインタですよね?

この一見恣意的な制限の理由は、「delete this」を呼び出した後の「this」ポインタの値が未定義であることにあります。この未定義の値は、予期しない結果や壊滅的な動作を引き起こす可能性があります。

たとえば、「this」ポインタを整数に再解釈し、それにアクセスしようとすると考えてみましょう。コンパイラーは、このアクションがハードドライブの消去を正当化するかどうかを自由に決定します。ほとんどのコンパイラはおそらくより合理的に動作するでしょうが、未定義の動作に直面してコンパイラの良性に依存するのは危険な行為です。

未定義の動作のリスクを回避するには、コンパイラを削除する前にポインタのコピーを作成することが賢明です。物体。これにより、元の「this」ポインタの動作が予測不可能なままであることを保証しながら、コピーの操作を続けることができます。

以上がC で「delete this」の後に「this」を使用するのはなぜ悪い考えなのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。