2009-10-08 1 views
2

Valgrind는 xxx 함수가 해제되지 않은 메모리를 할당했습니다. 벌금. 그러나 흔히 추적하기가 더 어렵습니다.해제되지 않은 각 메모리 블록의 주소를 valgrind에게 알려주려면 어떻게해야합니까?

#ifdef DEBUG 
fprintf(stderr, "something happening:%lx\n", (unsigned long)ptr); 
#endif 

그래서 난 그냥이 비 해제 된 메모리의 주소 표시 주소를 ptr에 일치해야합니다 나는 많은 만든이를 위해

.

비어 있지 않은 각 메모리 블록의 주소를 valgrind에게 알려주려면 어떻게해야합니까?

답변

1

Memcheck의 누출 검사기가 주소 인쇄를 지원한다고 생각하지 않습니다. 이는 할당되지 않은 여러 블록을 유사한 "손실 보고서"로 병합하려는 경우에 기인합니다.

Memcheck에서 장난하지 않으려면이 기능을 Valgrind 소스의 memcheck/mc_leakcheck.c에 추가해야합니다. 내가 집에 도착하고 더 자세한 위치를 게시 할 때 살펴 보겠습니다.

1

코드 위치에 대해 Falaina에게 감사드립니다.

valgrind-3.2.3의 경우, 나를 위해 일한 위치가 memcheck/mc_leakcheck.c, lc_scan_memory_WRK 함수에 있습니다.

lc_markstack_push_WRK (addr, clique) 이후에 추가되었습니다. 온라인 # 472

if (clique! = -1) {VG_ (printf) ("clique % d : % p \ n", clique, ptr); }

+1

올바른 옵션으로 memcheck에 추가해야합니다. –