問題タブ [dangling-pointer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - コンパイル時に一時ファイルへの無効な参照を検出または回避する
-O3
次の最小限っぽいプログラムは、およびおそらく を使用してコンパイルすると segfault が発生しますが、 (clang 4.0 を使用すると) で-O2
正常に実行されます。-O0
その理由は、一時オブジェクトから構築されたc.b
クラスの一時オブジェクトへの参照で初期化されるためです。コンストラクターが終了すると、一時的なものはなくなりますが、それへの参照は に残ります。B
A
c.C()
B
c.b
orの実装を制御できない場合、この状況を回避するためにどのような良い方法を採用できますB
かA
? この状態を検出できる静的アナライザーはありますか? (私のバージョンのscan-build
では問題が見つかりませんでした。)
c - 使用されていない場合、ダングリングポインターは危険ですか?
解放後使用の脆弱性がセキュリティ上の問題を引き起こす可能性があることはすでにわかっています。Use-after-free エラーはダングリング ポインターから発生するため、私の質問は、ダングリング ポインターがプログラムで使用されていない場合、それらは安全または良性 (それほど危険ではない) と見なされますか?
c++ - ぶら下がっているポインタから関数を呼び出すC ++でのこの未定義の動作はありますか
ここで、ポインターがぶら下がったときに「なぜこれが機能するのか」という質問がありました。答えは、それが UB であるということでした。つまり、機能するかどうかということです。
チュートリアルで次のことを学びました。
これは次と同等ですか:
私はこれについて間違っていますか?関数を呼び出すだけで無効な Foo ポインターにアクセスしないと説明したにもかかわらず、それは UB ですか?