当前位置: 代码迷 >> QT开发 >> Qt 施用 SQlite 内存泄露
  详细解决方案

Qt 施用 SQlite 内存泄露

热度:588   发布时间:2016-04-25 04:08:31.0
Qt 使用 SQlite 内存泄露
我的SQlite是一个简单的Unicon的中文字典。
测试中当调用查询的时候将不断增长内存。

#include "Idatabase.h"
Idatabase::Idatabase(const QString & name_):name_database(name_)
{
if (QFile::exists(name_))
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(name_);
db.open();
query = new QSqlQuery(db);
}
}

Idatabase::~Idatabase(void)
{
if (db.isOpen())
{
db.close();
}
QSqlDatabase::removeDatabase(name_database);
delete query;
}
int Idatabase::Select(const QString& sql,QStringList &output_)//此调用
{
// QString sql=QString("select * from zhcn where py Like '%1%'").arg(input_);
QStringList output_m;
query->prepare(sql);
if (!query->exec())
{
return 0;
}
output_.clear();
while(query->next())
{
output_m.push_back(query->value(2).toString());
}
if (!output_m.isEmpty())
{
output_ = output_m;
}
else
output_.clear();
return output_m.size();
}

我在上位机上没有问题,但下载到arm-linux的板子上内存不停的增加,哪位可以指导下

------解决方案--------------------
在arm-linux下的栈只有8K

Mark
------解决方案--------------------
引用:
引用:在arm-linux下的栈只有8K

Mark
搞错了应该是8012K
应该不是栈问题引起的。
我用QSlite做中文输入法,上位机跑没有如何问题,但在arm-linux上每次查询中文均以不同的大小增加内存。求大神指导下


我也在做qt输入法,你是怎么创建的中文字典数据库阿?谢谢
------解决方案--------------------
引用:
引用:引用:引用:在arm-linux下的栈只有8K

Mark
搞错了应该是8012K
应该不是栈问题引起的。
我用QSlite做中文输入法,上位机跑没有如何问题,但在arm-linux上每次查询中文均以不同的大小增加内存。求大神指导下

我也在做qt输入法,……


我做的是直接在构造函数里把码表加载到内存的在板上跑着还可以。看到你的想换成数据库试试
  相关解决方案