問題タブ [dr-memory]
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 - Dr.Memory を SDL プログラムで使用するとクラッシュする
私は SDL 1.2 プロジェクト (Windows、C、Code::Blocks、sdl_tff ライブラリも使用) に取り組んでいます。Dr.Memory でメモリ リークをチェックしようとしていますが、問題は起動時にクラッシュすることです (以下にログを示します)。
exe自体が勝手にクラッシュし、使用したtffファイルをそのディレクトリに追加すると、勝手に正常に動作します。
2 つのファイルが同じディレクトリにある限り、2 つのファイルがどこにあるかは関係ありません。exe は正常に実行されます。
Dr.Memory を正しく実行するにはどうすればよいですか?
pointers - glVertexAttribPointer 最後の属性値またはポインター
glVertexAttribPointer の最後の属性は const GLvoid* 型です。しかし、それは本当にポインタですか?実はオフセットです。0 を指定すると、オフセットへの null ポインターではなく、0 のオフセットを意味します。私のエンジンでは、次の関数を使用します。
getVertexAttribStart は intptr_t を返します。drmemory を実行すると、「未初期化読み取り」と表示され、その警告を削除したいと考えています。この警告は、reinterpret_cast から発生します。私の値はポインターではないので、 const void* に static_cast することはできません。この警告を修正するにはどうすればよいですか?
windows - このコールスタックは意味がありますか?
openssl を使用するアプリケーションで dr.memory を実行すると、次のリストが表示されます。
さて、これにはいくつかの奇妙な点があります。
SSL_load_error_strings
引数を取らない。openSSLは広く使用されているライブラリであるため、メモリエラーがどのように発生するかわかりません(もちろん、ヒープの破損などでプロセスがすでに停止していない限り)- なぜ
SSL_load_error_strings
電話するのERR_unload_strings
ですか?ソースをざっと見てみたところ、どこかでインライン化が行われて見つけにくくなっている可能性はあると思いますが、そうではないようです。 - なぜ
wcsnlen
電話するの_crtFlsGetValue
ですか?ファイバーローカルストレージが必要だとは想像できません(とにかくファイバーを使用していないので、どうなるかわかりません...)
基本的に、私の質問は、dr.memory によって生成されたコールスタックをまったく信頼できますか?
c++ - メモリー博士と謎の初期化されていない読み取り
以下のコードは興味深いことは何もしていませんが、謎は、メモリー博士がなぜユニット化された読み取りがあると考えるのでしょうか? 何か案は?
編集: これが完全なエラーの詳細です。
debugging - valgrind の「トラックの起源」に相当する Dr. Memory は何ですか?
--track-origins
valgrindでは、初期化されていない値がどこから来たのかを調べるためにオンにします。
Windows では、私が知る限り valgrind はまだ移植されていないため、Dr. Memory を使用しています。初期化されていない読み取りを報告しますが、マニュアルを見ると、初期化されていない値の起源を見つけるためのオプションが見つからないようです。しかし、どのメモリ範囲が問題であるかがわかります。
- それで、オリジンの追跡を可能にするオプションを知っている人はいますか(私は見落としていました)?
- そのようなオプションがない場合、問題のあるメモリ範囲を持つことで、誰がそれを割り当てたかを見つけることができますか?
c - Dr メモリのユニット化された読み取りエラーは Dissasembly と一致しません
(非常に単純な)csvの行を列に分割することを目的とする単純なループがあります。for ループの関連セクションは次のとおりです。
Dr Memory は、次の初期化されていない読み取りを報告します。
何が起こっているのかを診断するために、そのコード行の逆アセンブリを表示しました。
00D4A413
レジスターEAX
の値はですEAX = 0000006E
。それは'n'
:
したがって、私が知る限りeax
、この場合は値で初期化されます'n'
。私はこのエラーの原因を突き止めようとしていますが、どんな助けでも大歓迎です!
c++ - 単純なクラスのデフォルト コンストラクターでのメモリ リーク
話は、私はいくつかSEGFAULT
の s を得たということです - それで私は Dr. Memory で私のプログラムをテストし、次のクラスのデフォルトのコンストラクターを含む大量のメモリリークメッセージを得ました:
何が問題なのですか?!
Dr.Memory の要約からのサンプル:
まず、そのような警告に行きます:
次に、リークメッセージ:
UPD: 構造体の使用法
1) 戻り値として
2) const参照メソッドの引数として
3) 関数の戻り値の格納場所として