0

私はC、Ubuntuを初めて使用し、Valgrindをインストールして、この単純なCコードでテストすることにしました。

#include <stdio.h>

int *p;

int main(void) {
    p = calloc(100, sizeof(int));
    return 0;
}

このコードをsum.cファイル内に配置してコンパイルしました。次に、次のように入力しました。

valgrind --tool=memcheck --leak-check=yes sum

ターミナルウィンドウで、これは私が得たものです:

ここに画像の説明を入力してください

それがループし続けるのか、それとも単にスタックするのかはわかりませんが、ctrl + dをクリックして停止するまで、このままになります。これが私が得たものです。

ここに画像の説明を入力してください

私は何か間違ったことをしていますか?メモリリークが発生していることがわからないのはなぜですか?

ちなみに、これはUbuntuバージョン11.04です。

前もって感謝します

4

2 に答える 2

7

に注意してください

00000     0

とは言わなかったので/usr/bin/sum、自分の実行可能ファイルの代わりに実行しています./sum。そのため、ヒットする必要がありますC-dsum(1)EOFまで待機します。


ちなみに、リークは報告されない可能性が高いですが、「メモリはまだ到達可能」です。

于 2013-03-25T19:25:48.997 に答える
2

おそらく次の表記を使用する必要があります

valgrind --tool=memcheck --leak-check=yes ./sum

つまり、「sum」が実行可能ファイルの名前である場合です。の追加に注意してください'./'

于 2013-03-25T19:22:54.427 に答える