我知道这个问题已经得到解答,但我仍然无法正确解决这个问题。
我正在使用UBUNTU 12.10为基于ARM9的微处理器开发应用程序。
我使用Sqlite3.8.3进行数据管理。
我遇到过数据库中的内存泄漏。我跟着以下案件。
CASE-1 - 假设内存泄漏由QSql Driver`完成。所以我有 为简单的插入方法实现了以下代码。
QSqlQuery *query = new QSqlQuery(sqliteCon);
query->prepare("QUERY FOR INSERTING INTO THE DATABASE");
if(query->exec())
{
QString retVal = query->lastInsertId().toString();
query->finish();
query->clear();
}
delete query;
sqliteCon.close();
但它仍然没有释放内存。所以我试图通过简单的c代码直接使用sqlite3库。
CASE-2 直接使用Sqlite3.8库进行插入方法。
代码示例
sqlite3 *db;
rc = sqlite3_open("test.db", &db);
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
exit(0);
}
else
{
fprintf(stderr, "Opened database successfully\n");
}
sprintf("QUERY FOR INSERT");
rc = sqlite3_exec(db, sqlquery, callback, 0, &zErrMsg);
if( rc != SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
else
{
fprintf(stdout, "Records created successfully\n");
}
sqlite3_free(zErrMsg);
sqlite3_close(db);
它仍然没有释放内存。
怎么办? 可以选择 SQLITE_ENABLE_MEMORY_MANAGEMENT , CACHE_SIZE 。 我应该使用这个选项吗? 如果是,那么我如何使用这些选项编译Sqlite?
提前感谢。