2010-11-29 3 views
2

Visual C++에서 MFC의 SQLite를 사용하고 있습니다. 나는 sqlite3_prepare에 의해 준비된 모든 문장을 sqlite3_finalize한다. 응용 프로그램을 닫을 때 db 연결을 닫습니다.SQLite를 사용할 때 메모리 누수가 많습니다.

어디에서 문제가 될 수 있습니까? 감사합니다

+0

정말 메모리 누수가 확실합니까? sqlite3_shutdown()에서 메모리가 반환되지 않았 음을 확인 했습니까? –

답변

1

sqlite3은 때때로 sqlite3_exec() 호출의 오류 메시지와 같이 사용자가 해제해야하는 문자열을 할당합니다. sqlite3_free 문자열이 페이지를

http://www.sqlite.org/capi3ref.html

를 검색하고이 같은 몇 가지 사례를 찾을 수 있습니다. 코드에서 이러한 사례를 올바르게 처리하고 있는지 확신합니까? 그것은 몇 가지 정보를 캐시 및 내부 메모리 할당이 일부 메모리 블록을 보유으로 메모리 사용이 천천히 특정 지점까지 매우을 증가 않지만 내 경험 sqlite3를에서

일반적으로 자신의 메모리를 누출하지 않습니다. 어떻게 메모리 누수를 감지하고 원인으로 sqlite3를 어떻게 결정 했습니까?

MSVC 메모리 누수 디버깅 기능을 사용 해본 적이 있습니까? 그것은 당신이 어떤 메모리 누수의 원인을 파악하는 데 도움이해야

http://msdn.microsoft.com/en-us/library/x98tx3cf%28v=VS.100%29.aspx

: 비주얼 스튜디오는 소스 코드 기반의 메모리 디버깅 기능을 제공합니다.

1

위의 대답을 기반으로 sqlite 설명서에서 sqlite3_exec를 통해 실행 된 모든 문에서 sqlite가 반환 한 오류가 sqlite보다 많으면 오류 메시지에 필요한 메모리가 할당되고 해당 메모리를 해제하는 것은 응용 프로그램의 책임임을 찾았습니다.

관련 문제