Linux Qt中Sqlite3数据库中的内存泄漏

时间:2014-06-20 06:52:28

标签: qt memory-management memory-leaks sqlite arm

我知道这个问题已经得到解答,但我仍然无法正确解决这个问题。

我正在使用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?

提前感谢。

0 个答案:

没有答案