2013-10-20 1 views
0

나는 valgrind를 실행하여 내 프로그램이 메모리 문제에 관해 가지고있는 오류를 확인합니다. 는 그리고 Valgrind의 출력은 다음과 같습니다 오류의Valgrind로 메모리 검사하기

==31041== 17,736 bytes in 1 blocks are still reachable in loss record 423 of 423 
==31041== at 0x4C2CD7B: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) 
==31041== by 0x5B0F21F: CRYPTO_malloc (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) 
==31041== by 0x5874B12: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0) 
==31041== by 0x5874C68: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0) 
==31041== by 0x586DE5B: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0) 
==31041== by 0x4E4FFEA: ??? (in /usr/lib/libpq.so.5.4) 
==31041== by 0x4E40AB5: PQconnectPoll (in /usr/lib/libpq.so.5.4) 
==31041== by 0x4E41F4D: ??? (in /usr/lib/libpq.so.5.4) 
==31041== by 0x4E428FE: PQconnectdb (in /usr/lib/libpq.so.5.4) 
==31041== by 0x401D18: open_connection (database.c:23) 
==31041== by 0x402A78: init (kernel.c:28) 
==31041== by 0x402E9C: main (main.c:22) 

90 %, 이것에 대해입니다!

누군가 해결 방법을 알고 있습니까?

답변

1

많은 데이터베이스 연결 핸들을 열고 해제하는 것을 잊어 버리십니까? libpq를 사용할 때 서버에 대한 연결이 성공하지 못한 경우에도 PQconnectdb에 의해 반환 된 포인터가 사용하는 메모리를 항상 확보해야합니다. 이를 수행하려면 으로 전화하여 PGconn에 대한 포인터를 지정하십시오.

+0

맞아요.하지만 하나의 연결을 열고 연결이 필요한 모든 기능에서 사용합니다. 진행 방법? –