多次访问数据库后,内存严重增加,看了网上的内存清空,一直没有什么效果,各位看看啥原因啊
应用程序在多次访问数据库时未正确释放数据库连接或未正确管理内存所导致的
1.继承QThread
2.在Qt 5中是没有现成的QThread,需要自己手动添加
3.构造函数隐式转换
4.run()函数
1)在线程中,先执行构造函数,再执行run()函数
2)我这种写法forever()是Qt中自带的循环,类似与for .
void robThread::run()
{
forever
{
qDebug()<<"current thread ID************:"<<QThread::currentThreadId();
if(m_bPause)
{
qDebug()<<"this is a thread 1111 "<<index;
//信号在自己的头文件中声明
emit captured(index);
sleep(1);
// msleep(100);
// usleep(1000);
index++;
}
else
{
qDebug()<<"this is break!";
emit isDone();
break;
}
//信号在自己的头文件中声明
}
// exec();
}
void robThread::Stream()
{
m_bPause = true;
}
void robThread::stop()
{
m_bPause=false;//判断一个bool变量
}
3)设置bool变量停掉forever()
4)exec()函数,是程序阻塞,等待事件发生,若添加exec()后,程序在关掉窗口前不会终止,等待事件发生,比如按钮点击事件等。这里写在线程run()函数末尾,表示阻塞住线程,等待接受指令,一般都是在等待线程启动(start)或停止(exit)
5)线程类要在主函数头文件中声明。
5.第二种方式建立线程类
1)首先同上面一样添加一个类,但不需要继承QThread
2)在头文件中声明QThread对象以及类对象
private:
Ui::MainWindow *ui;
camerathread *m_pcamerathread;
QThread * m_pCapThread;
//newclase *m_pnewclase;
3)在cpp文件中将类对象添加进QThread
首先你要定位到你的数据库文件位置,很多人写Qt数据库,连自己文件在哪都不知道,连没连上删没删掉都凭感觉,有时候你通过代码删除数据库时只是一个新生成的,删除肯定没用啊,仍有问题可私聊