用cppsqlite发生内存泄漏,最后发现是把事物当普通语句去执行了。
其实本质是下面的:
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) 来释放错误信息,防止内存泄露