我介紹了存儲器錯誤的與下面的一段的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