Linux에서 실행되는 C++ 응용 프로그램에서 메모리 누수를 파악하려고합니다. 우리는 Valgrind 3.6.0을 사용하고 있으며 "확실하게 손실 된"스택을 거의 얻을 수 없었습니다. 이 보고서에서는 총 "확실히 손실 된"바이트 수를 기록했습니다.Valgrind는 누출을 수정 한 후에도 동일한 메모리 누수를 표시합니다.
수정 내용은 다음과 같습니다. delete ptr
에서 delete[] ptr
으로 변경되었습니다. 여기서 ptr
은 힙의 위치 배열을 가리 킵니다.
ptr에 메모리가 충분하다는 점에 유의하십시오. 그리고 우리는 다른 많은 삭제를 유사하게 고정 시켰습니다. 따라서 우리는 누수가 줄어들 것을 기대하고있었습니다.
그러나 수정 후, 이상하게 Valgrind는 이전과 같은 누수를 여전히보고했습니다.
==00:00:15:13.661 14014== LEAK SUMMARY:
==00:00:15:13.661 14014== definitely lost: 236 bytes in 8 blocks
==00:00:15:13.661 14014== indirectly lost: 22,113 bytes in 17 blocks
==00:00:15:13.662 14014== possibly lost: 695,006 bytes in 47 blocks
==00:00:15:13.662 14014== still reachable: 2,056,059 bytes in 732 blocks
==00:00:15:13.662 14014== suppressed: 0 bytes in 0 blocks
누군가가 Valgrind의 이러한 동작에 대해 알려줄 수 있습니까? 우리는 mem_check 도구를 호출하는 모든 권리 옵션을 사용하는 등
코드없이, 우리는 당신을 도울 수 없습니다. –