首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

sqlite数据库插入数据导致内存泄露,该怎么处理

2012-04-15 
sqlite数据库插入数据导致内存泄露环境:wince5.0 evc 已嵌入sqlite3数据库问题:我的程序需要每秒保存一次

sqlite数据库插入数据导致内存泄露
环境:wince5.0 evc 已嵌入sqlite3数据库
问题:我的程序需要每秒保存一次数据,插入数据库,但是在操作sqlite3数据库的一小段代码存在一点点BUG,系统连续运行5小时左右就会崩溃,显示“程序内存严重不足,必须关闭一项任务”,经过测试,下面的代码的屏蔽掉程序可连续运行很长时间,麻烦大家帮我找找问题,感激不尽。。。

C/C++ code
try    {    CString str_temp;        str_temp.Format(_T(" values('%f','%f','%f','%f','%f','%f','%d','%d','%d','%d','%d','%d')"),fData[0],fData[1],fData[2],fData[3],        fData[4],fData[5],t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute(),t.GetSecond());    str_temp="insert into "+m_strTableName+str_temp;    //插入一笔记录    m_Sqlite3db.execDML(str_temp);    }    catch(CppSQLite3Exception ex)    {        AfxMessageBox(ex.errorMessage());    }


 


[解决办法]
和 sqlite3 相关的也就这么一句话: m_Sqlite3db.execDML(str_temp);

先注释此句后试试看如何吧
[解决办法]
CString str_temp;

str_temp.Format(_T(" values('%f','%f','%f','%f','%f','%f','%d','%d','%d','%d','%d','%d')"),fData[0],fData[1],fData[2],fData[3],
fData[4],fData[5],t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute(),t.GetSecond());
str_temp="insert into "+m_strTableName+str_temp;


改为WCHAR数组和_wsprintf来做。另外看下是不是报了异常
do{ 
pVM = compile(szSQL);

nRet = _sqlite3_step(pVM);

if (nRet == SQLITE_ERROR)
{
LPCTSTR szError = (LPCTSTR) _sqlite3_errmsg(mpDB);
throw CppSQLite3Exception(nRet, (LPTSTR)szError, DONT_DELETE_MSG);
}
nRet = _sqlite3_finalize(pVM);

while( nRet == SQLITE_SCHEMA );
这段代码有点问题,nRet == SQLITE_ERROR的时候直接抛出异常,都没调用_sqlite3_finalize(pVM);

[解决办法]
看样子还真是execDML的问题 

http://topic.csdn.net/u/20100930/15/032f0887-85cc-43ea-8c8f-6980e4e780ec.html?290968101

http://topic.csdn.net/u/20120226/14/99bdfcb9-fef0-4d94-9c56-446349e20e8a.html

http://topic.csdn.net/u/20090727/13/b249254c-4420-43a7-b503-7c612f008759.html
[解决办法]
换个版本比较新的sqlite
[解决办法]
探讨

早上试了一下,换了3.7的版本,还是有内存泄露。。。
引用:

换个版本比较新的sqlite

热点排行