我用sqlite3_exec执行插入语句,插入超过200次,就会有KERN-EXEC 3的错误,查看日志,应该是内存不足。下面是sqlite错误提示: “database disk image is malformed” "揶揶揶揶揶揶揶揶揶揶揶揶揶揶" "out of memory" 在执行完sqlite3_exec后,怎么释放内存? 我每插完100次,就close掉,然后再打开,还是会有内存不足的错误,那位大牛有解决的办法?
以前不知道sqlite回调的那个ptr要释放。以前更新和插入100个以内是可以的,超过200个,打ptr:“database disk image is malformed”,再后来,会打印出out of memory的问题。而且使用sqlite,在select的时候没有内存泄露,在插入或更新的时候就有内存泄露。
int result = sqlite3_exec(iDb,aSqlString,NULL,NULL,&ptr);
if(result != 0)
{
TRACE(ptr);//errors will be written into my log
// add below free code
free(ptr);
}
}
下面是sqlite3_exec执行后返回的错误提示(即日志里记录的ptr--TRACE(ptr);):
“database disk image is malformed”
形参aSqlString ="INSERT INTO s_black_list_call (number,cat_id,region_code,intercept) VALUES ('19802301161','1','023','1');" 如此之类。
下面是sqlite3_exec执行后返回的错误提示(即日志里记录的ptr--TRACE(ptr);):
“database disk image is malformed”
"揶揶揶揶揶揶揶揶揶揶揶揶揶揶"
最后,在执行了大约1000次后,输出的错误为"out of memory"几次之后,直接KERN-EXEC 3的错误,程序退出。