내가 같이, SQLite는 데이터베이스에 액세스 할 QT 4.5.3을 사용하고 누수의 원인 :열기 데이터베이스는 메모리
가<error>
<unique>0x5b</unique>
<tid>1</tid>
<kind>Leak_DefinitelyLost</kind>
<what>986 (384 direct, 602 indirect) bytes in 1 blocks are definitely lost in loss record 23 of 23</what>
<leakedbytes>986</leakedbytes>
<leakedblocks>1</leakedblocks>
<stack>
<frame>
<ip>0x4006D3E</ip>
<obj>/opt/valgrind341/lib/valgrind/x86-linux/vgpreload_memcheck.so</obj>
<fn>malloc</fn>
<dir>/home/slawomir/valgrind-3.4.1/build/valgrind-3.4.1/coregrind/m_replacemalloc</dir>
<file>vg_replace_malloc.c</file>
<line>207</line>
</frame>
<frame>
<ip>0x67FADC4</ip>
<obj>/usr/lib/libsqlite3.so.0.8.6</obj>
<fn>sqlite3_malloc</fn>
</frame>
<frame>
<ip>0x67FAF13</ip>
<obj>/usr/lib/libsqlite3.so.0.8.6</obj>
</frame>
<frame>
<ip>0x6816DA3</ip>
<obj>/usr/lib/libsqlite3.so.0.8.6</obj>
</frame>
<frame>
<ip>0x68175FD</ip>
<obj>/usr/lib/libsqlite3.so.0.8.6</obj>
<fn>sqlite3_open16</fn>
</frame>
<frame>
<ip>0x40DDEF9</ip>
<obj>/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so</obj>
</frame>
<frame>
<ip>0x7F34AE0</ip>
<obj>/usr/lib/libQtSql.so.4.5.2</obj>
<fn>QSqlDatabase::open()</fn>
</frame>
</frame>
</stack>
</error>
사람이 누수를 해결하는 방법을 알고 있나요 :
void test_failed_connection()
{
db obj("/");
TS_ASSERT_THROWS(obj.open(), DatabaseError);
}
나는 Valgrind의에 의해보고 된 메모리 누수를 얻을?
@DumbCode 아무것도 최적화하려고하지는 않지만 코드를 단위 테스트하려고합니다. 문제는 데이터베이스를 여는 데 문제가있을 때 사례를 테스트하는 방법입니다. 이 예제에서 볼 수 있듯이 "/"(루트 디렉토리)를 데이터베이스 이름으로 전달하여이 경우를 에뮬레이션합니다. –