2017-10-26 24 views
0

こんにちは、私のValgrindは私にメモリエラーを示していますが、私はそれを見つけることができません。C valgrindメモリリーク

== 18608 == HEAP概要:出口での使用に

== 18608 ==:1つのブロックに88バイト

== 18608 ==合計ヒープ使用量:4つのallocs、3 2,220バイト

== 18608 ==

== 18608 == 1ではない、解放ブロック

== 186へのポインタを検索割り当て、解放チェック08 == 53708バイト

== 18608 ==

== 1つのブロックで88のバイトは間違い損失レコード1 0x402D17Cで18608 == ==

1の中で失われている18608 ==: 0x8という 0485BFによってはmalloc(/usr/lib/valgrind/vgpreload_memcheck-x86-linux.soで)

== 18608 ==:0x8048680によってpmalloc(AUFで)

== 18608 ==:メイン(aufで)

== 18608 ==

== 18608 ==リーク概要:

== 18608の==は間違いなく失わ:1つのブロックで88のバイトが

== 18608 ==間接的に失った:0バイト0ブロック

に== 18608 ==おそらく失わ:0ブロックで0バイト

== 18608 ==まだ到達可能:0ブロックで0バイト

== 18608 ==抑制:0ブロック内の0バイト

== 18608 ==

== 18608 == ERROR概要:1つのコンテキストから1エラー(抑制:0から0)

== 18608を= =エラー概要:1つのコンテキストからの1つのエラー(抑制された0から0まで)

+2

あなたもらえ画像として表示するのではなく、ここにコードを貼り付けますか? – frslm

+1

'pmalloc'の戻り値を保存する必要があります。それを使用して「フリー」。 – BLUEPIXY

+0

答えをありがとうが、私は理解していない戻り値を保存する方法 –

答えて

1

int *は2つ割り当てられます。

print_prim(pmalloc(n), laenge); 
free(pmalloc(laenge)); 

適切に最初のリソースを解放するには、あなたがこのような何かをするでしょう:あなたは、最初のリソースを解放するが、あなたはそれで何もせずに第二1を解放しないでください

int *p = pmalloc(n); 
print_prim(p, laenge); 
free(p); 
関連する問題