問題タブ [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++ - ダングリング ポインターが表示されないのはなぜですか?
次のコードの出力が10
エラーではないのはなぜですか? object2
ぶら下がっているポインタではありませんか?
ありがとう!
c++ - 削除されたメモリブロックへのアクセス時のエラーを回避するには?
タイトルが明確でない場合は、次の例があります。
現在a
は NULL ですが、b
そうではありません。にアクセスするb
と、間違った値が返され、プログラムがクラッシュする可能性があります。
これを防ぐ方法は?
c - c: あいまいなメモリ リークをデバッグするための戦略は?
私は C でプロジェクトに取り組んでおり、プログラムをクラッシュさせるあいまいなバグをデバッグする方法を理解しようとしています。コードの小さなバージョンを作成して問題を切り分けようとする試みは、かなり大規模であり、機能していません。だから私は、メモリリークをデバッグして特定する方法を考え出そうとしています。
私は次の計画を思いつきました: 問題が特定の関数の実行に起因することはわかっており、その関数はそれ自体を再帰的に呼び出します。そこで、プログラムのメモリ割り当てのスナップショットを作成できると考えました。ボンネットの下で何が起こっているかについてジャックを知らないので(この状況で役立つには少し足りないことを知っています):
プログラムがクラッシュする瞬間の直前に保持しているメモリレコードの内容を印刷するという考えです(GDBのおかげでクラッシュする場所を知っています)。
そして、プログラム全体で(プログラムの各データ構造に対して、上記のような同様のプッシュ関数があります)、データ構造の割り当てと合計スタック(ヒープ?)のメモリ割り当てを集計する関数を含む1つのライナーを追加するだけです(追跡できます)の)。私は、実行中のプログラムのスナップショットを記録する必要があると感じた場所に、さらに memory_record 構造を作成するだけです。問題は、実際に使用されているメモリの量を何らかの方法で記録できない場合、このメモリバランスシートの記録が役に立たないことです。
しかし、どうすればこれを行うことができますか?さらに、ぶら下がっているポインターとリークをどのように考慮に入れるでしょうか? 私はOS Xを使用していますが、スタックポインタなどを記録する方法を現在調べています。
編集: あなたが尋ねたので: valgrind の出力: (closure() は、悪いポインターを返す main から呼び出される関数です: 二重リンクリストの先頭を返すはずです。私は余分なノードを計算してリンクリストに追加し、ノード間をジャンプする必要があるため、それ自体を再帰的に呼び出します。)
c++ - std::unique_ptr がスコープ外になった後もオブジェクトにアクセスできます。実行時の動作の違い
modify_entry
次のコードは、型のオブジェクトへのポインターを関数に渡し、関数Entry
の本体内でunique_ptr
生のポインターを採用します。ただし、ポインターが指すオブジェクトは、関数が戻った後も存続しているように見えます。
このコードをコンパイルすると
と
clang バージョン 3.4 (タグ/RELEASE_34/final)
ターゲット: x86_64-apple-darwin13.1.0
スレッドモデル: posix
エラーなしで実行され、出力は
John のコンストラクタ
modify_entry() の内部
John Doe のデストラクタ
modify_entry() から戻る
ジョン・ドウ
ただし、ここでは、25 行目で実行時エラーが発生します。
Q: clang によって生成された実行可能ファイルを実行してもランタイム エラーが発生しないのはなぜですか?
誰かが状況を明確にしていただければ幸いです。所有権を適切に譲渡しようとしているわけではないことに注意してください。この不自然な悪いコードの例は、デバッグ プロセスの副産物です。make_unique
などの移動セマンティクスunique_ptr
は素晴らしいですが、これは私が求めているものではありません。
前もって感謝します。
swift - 弱い参照と所有されていない参照の違いは何ですか?
スウィフトには次のものがあります。
- 強力な参照
- 弱参照
- 所有されていない参照
非所有参照と弱参照の違いは?
所有されていない参照を安全に使用できるのはいつですか?
所有されていない参照は、C/C++のダングリング ポインターのようなセキュリティ リスクですか?
c++ - unique_ptrぶら下がりポインタ
C++ コード:
var
このコードの後にポインターがぶら下がっていますか?
c++ - C++ でダングリング ポインターを削除する
このコードの後 _var2 はDangling pointer
.
_var2 ( delete _var2
) を削除する必要がありますか? それは必然ですか?
c - なぜダングリングポインタは値を格納できず、なぜ0をスローするのですか?
ダングリングポインタが値を格納できないのはなぜですか?なぜ0をスローするのですか? 解放された同じメモリを指しているため。何らかの値を保存しようとすると、なぜ 0 になるのでしょうか?
c++ - この非同期トリックは機能しますか、それともアクセスすると状態がぶら下がりますか?
私は、std::async
操作を完全に非同期で開始した方がよい状況に直面しています。
問題は、未来を保存しないと最後に関数がブロックされることです。私はこれが起こらないことを望みます。
これstd::future
により、関数のスコープの最後でデストラクタを呼び出すことができなくなります。
これはうまくいくでしょうか?結果を変数に保存しないとどうなりますか?