1

Valgrind は、ガベージ コレクタによって解放されたメモリ ロケーションでプログラムが無効な読み取りを実行していると報告しています。

Valgrind が無効に読み取られたメモリの割り当て場所をペアとともに表示すると便利です。

「サイズ 2 の無効な読み取り」

「アドレス 0x523befe は、解放されたサイズ 12 のブロック内の 6 バイトです」

残念ながら、メモリ割り当ての場所は表示されません。これが私のValgrindコマンドラインです:

valgrind --tool=memcheck --leak-check=full --track-origins=yes --undef-value-errors=yes --read-var-info=yes --num-callers=50

--tool=memcheck の直後に --track-origins=yes と他のいくつかの場所を貼り付けてみましたが、役に立ちませんでした。

このインスタンスでメモリ作成場所を取得する方法はありますか?

編集:

Valgrind の最終的な出力は次のとおりです。

==14849== リークの概要:
==14849== 確実に失われた: 0 ブロックで 0 バイト
==14849== 間接的に失われた: 0 ブロックで 0 バイト
==14849== 失われた可能性: 24 ブロックで 900 バイト
==14849 == まだ到達可能: 45,043 ブロックで 631,292 バイト
==14849== 抑制: 0 ブロックで 0 バイト ==14849==到達可能な
ブロック (ポインターが見つかったブロック) は表示されません。
==14849== それらを表示するには、次を使用して再実行します: --leak-check=full --show-reachable=yes
==14849==
==14849== 検出および抑制されたエラーの数については、次を使用して再実行します: -v
= =14849== エラーの概要: 14 のコンテキストから 14 のエラー (抑制: 0 から 0)

4

0 に答える 0