现在的位置: 首页 > 综合 > 正文

sqlite 内存泄露解决方法

2013年12月07日 ⁄ 综合 ⁄ 共 831字 ⁄ 字号 评论关闭

近日在项目中使用sqlite3作数据库,在开发的过程中,无论使用文件库还是内存库总会发生内存泄露的问题。

经过查找及在网上寻找解决方案,总结解决方法如下:

1. 在使用

sqlite3_get_table(
  sqlite3 *db,          /* An open database */
  const char *zSql,     /* SQL to be evaluated */
  char ***pazResult,    /* Results of the query */
  int *pnRow,           /* Number of result rows written here */
  int *pnColumn,        /* Number of result columns written here */
  char **pzErrmsg       /* Error msg written here */
);

后,要调用   sqlite3_free_table(pazResult) 来释放结果集,防止内存泄露

2. 在使用

sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);

后,要调用 sqlite3_free(*errmsg) 来释放错误信息,防止内存泄露

在目前开发中出现的问题均可通过以上两个办法解决,欢迎补充。

抱歉!评论已关闭.