我介绍了存储器错误的与下面的一段的C代码:的valgrind(MEMCHECK)工具因此未检测内存泄漏
#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检测到的错误无效的读/写和绝对丢失,这是正确的和预期的。
现在,我添加了相同的一段代码到我的应用程序的共享对象文件(的.so)。此应用程序作为服务运行,并且是守护进程。它永远不会退出。我将valgrind应用于我的应用程序,并调用了修改后的'.so'。
MEMCHECK检测无效的读取/写入错误,但不是绝对失去尽管所有这些错误是在一个method.can我得到一些帮助,使MEMCHECK检测内存泄漏(绝对丢失)错误?
由于提前, PV
您是否抱怨Valgrind在仍然运行的应用程序中未检测到内存泄漏?据我所知,Valgrind在进程退出之前无法检测内存泄漏 - 换句话说,在报告错误之前,您必须停止守护进程。 – 2012-04-26 12:27:41