嵌入式技术william hill官网
直播中

贾桂林

7年用户 1469经验值
私信 关注
[问答]

sqlite软件包内存泄漏如何解决?

在4.1.0版本下使用sqlite软件包,update的sqlite文件(不知道为什么直接update的一运行就报(obj != object) assertion failed at function:rt_object_init, line number:358, 而从github下载的就能运行),
运行一段时间后发现使用内存不断增大,用memtrace工具确定是操作数据库的线程导致,请问造成内存泄漏到底是我应用程序的问题还是软件包本身的问题,该怎么排查呢?硬件使用的nuc980dk61yc



void app_sqlite3_thread(void *argument)
{
    sqlite3_initialize();
    sqlite3 *db;

回帖(3)

nhcp

2022-5-24 15:26:18
是申请了没有正确释放还是软件包本身有问题?
举报

贾桂林

2022-5-24 15:26:42
照理来说我已经正确释放了,不清楚具体什么原因导致。网上有种说法是在linux下占用内存变大是因为sqlite缓存问题,目前我已经在通电挂着了,挂几天看看内存是会一直增加还是增加到一定程度后不再增加
举报

陈静

2022-5-24 15:26:51
对着代码仔细核对了最可疑的sqlite3_exec函数中关于最后一个二级指针的形参、内部处理代码,从这部分代码看不出什么问题。

错误msg的指向的内存,在返回值不为0的时候才在sqlite3_exec函数内部malloc,然后lz的代码也进行了free。

比较感兴趣,关注一下,看看lz后续的调试结果。

要不试着屏蔽一下sqlite3_exec,看看是否依然发生内存泄漏,别被memtrace的指向带偏了方向。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分