我是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。
提前致谢
答案 0 :(得分:6)
注意
00000 0
您正在运行 /usr/bin/sum
而不是您自己的可执行文件,因为您没有说./sum
。这就是为什么你必须点击C-d
:sum(1)
等到EOF。
作为旁注,很可能你不会报告泄漏,而是“内存仍然可以访问”。
答案 1 :(得分:2)
您可能需要使用以下符号
valgrind --tool=memcheck --leak-check=yes ./sum
即如果'sum'是可执行文件的名称。请注意添加'./'