【发布时间】:2016-07-03 11:17:09
【问题描述】:
为了进行并发查询,我编写了以下代码。
QString databaseName = "DB-"+QThread::currentThread()->objectName();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL",databaseName);
db.setHostName("192.168.1.2");
db.setDatabaseName("Behroozi");
db.setUserName("root");
db.setPassword("password");
db.open();
QSqlQuery query(db);
query.prepare("select * from Person where chatID=:chatID");
query.bindValue(":chatID",chatID);
if(query.exec())
return true;
db.close();
QSqlDatabase::removeDatabase(databaseName);
代码创建一个具有唯一名称的连接,打开它,进行查询,关闭它,最后删除连接。
问题是,它有内存泄漏。当我评论代码时,它不会泄漏。我还应该做些什么来防止它?
我写的代码安全吗?
如果我在 return 之前复制 db.close() 和 removeDatabase,它将打印:
QSqlDatabasePrivate::removeDatabase: 连接 'DB-ReplyThread-1' 是 仍在使用中,所有查询都将停止工作。
【问题讨论】:
-
你怎么知道它有内存泄漏? Process Explorer 下的内存使用量会增加吗?
标签: database multithreading qt memory-leaks