Я представил ошибку памяти с следующим фрагментом кода C:Valgrind (MemCheck) инструмент didnot обнаружения памяти утечек
#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 чтения/запись и, безусловно, утерянные, что является правильным и ожидаемым.
Теперь я добавил один и тот же фрагмент кода к общему объекту (.so) моего приложения. Это приложение работает как служба и является процессом демона. Он никогда не выходит. Я применил valgrind к моему приложению и вызвал измененный «.so».
Memcheck обнаруживает неправильные ошибки чтения/записи, но не определенно потерян, хотя все эти ошибки находятся в одном методе. Можно ли получить некоторую помощь в том, что memcheck обнаруживает утечку памяти (определенно потерянную)?
Спасибо заранее, PV
Вы жалуетесь, что Valgrind не обнаруживает утечку памяти в неподвижном приложении? Насколько я знаю, Valgrind не может обнаружить утечки памяти до тех пор, пока процесс не завершится - другими словами, вам придется остановить демона до того, как будут сообщены ошибки. –