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-d:sum(1)等到 EOF。


附带说明一下,您很可能不会报告泄漏,而是“仍然可以访问内存”。

于 2013-03-25T19:25:48.997 回答
2

您可能需要使用以下符号

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

也就是说,如果“sum”是您的可执行文件的名称。注意添加'./'

于 2013-03-25T19:22:54.427 回答