我用以下 C 代码介绍了内存错误:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv){
int i;
int *a = (int *)malloc(sizeof(int) * 10);
if (!a) return -1; /*malloc failed*/
for (i = 0; i < 11; i++){
a[i] = i;
}
for (i = 0; i < 11; i++){
printf("a[%d] = %d\n",i ,a[i] );
}
// free(a);
return 0;
}
memcheck 检测到错误 Invalid read/write 和肯定丢失,这是正确的和预期的。
现在,我将同一段代码添加到我的应用程序的共享对象文件 (.so) 中。此应用程序作为服务运行,并且是一个守护进程。它永远不会退出。我将 valgrind 应用于我的应用程序并调用了修改后的 '.so' 。
Memcheck 检测到无效的读/写错误,但尽管所有这些错误都在一种方法中,但并没有绝对丢失。我可以在让 memcheck 检测内存泄漏(肯定丢失)错误方面获得一些帮助吗?
在此先感谢, PV