며칠 동안 실행될 수있는 비교적 큰 숫자의 응용 프로그램 코드가 있으며 결국에는 일부 숫자가 유출됩니다. 모든 것은 C++로 작성되어 제 3 자 라이브러리를 사용하고 GCC 4.6을 사용하여 컴파일됩니다. 이 코드는 전체에서 공유 포인터를 사용합니다.메모리가 어디에서 소비되는지 알아보십시오.
시간이 지남에 따라 코드의 메모리 소비는 (공유 된) 모든 메모리가 모두 소모 될 때까지 증가하고 충돌합니다. 알고리즘 적으로 코드는 시간이 지남에 따라 메모리를 구축해서는 안되기 때문에 어딘가에 버그가있을 것입니다.
valgrind의 누수 검사기를 통해 작은 예제를 실행했는데 모두 괜찮다고보고했습니다. 내 생각에 공유 포인터가 실수로 임의의 장소에서 생성되어 불필요한 데이터가 프로세스에서 해제되는 것을 방지 할 수 있다고 생각했습니다. (하지만 이는 단지 추측에 불과합니다.)
하루가 끝나면 디버깅하는 방법이 부족합니다. 아이디어가 있으십니까?
키워드 :'memory profiler' – Kos
valgrind에게 "여전히 도달 할 수있는"메모리를보고 해 줄 것을 요청하십시오. –