sqlite3_prepare_v2取决于范围

时间:2012-06-20 18:41:20

标签: c++ sqlite

我在c ++应用程序中使用sqlite3_prepare_v2并在实例化时获取内存泄漏 sqlite3_stmt外部函数调用sqlite3_prepare_v2。

样品:

sqlite3_stmt* ps=NULL;
void prepare(void)
{
   if(ps == NULL)
       sqlite3_prepare_v2(&db,"insert into nomatterbd...",-1,&ps,NULL);

}

调用prepare,关闭应用程序并导致内存泄漏。

这样做:

void prepare(void)
{
  sqlite3_stmt* ps=NULL;
  sqlite3_prepare_v2(&db,"insert into nomatterbd...",-1,&ps,NULL);
}

没有内存泄漏。 检查最新的合并。

我的目标是在每次插入或更新时打开和关闭数据库。加快整体 事情,我想准备插入和更新的全局声明。 不幸的是,如果全局和一旦创建的语句导致内存泄漏,这将失败。

有人可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您是否正在调用sqlite3_finalize()?

http://sqlite.org/c3ref/finalize.html

您的问题没有说明何时发生内存泄漏 - 我猜测程序何时退出。