Qt 内存泄露原因及解决办法
来源:互联网 发布:三合一旅游网站源码 编辑:程序博客网 时间:2024/06/06 21:05
泄露原因:
int main(int argc,char *argv[]) { QApplication app(argc,argv); QLabel *label = new QLabel("Hello World"); label->show(); return app.exec(); }
当exec()退出时(也就是事件循环结束的时候。窗口关闭,事件循环就会结束),label是没办法delete的,这就造成了内存泄露
label是建立在堆上的,app是建立在栈上的,这意味着label会在app之后析构,即label额生命周期长于app的生命周期。这是Qt编程的大忌!!!!
在app退出时,组件却没有关闭,这就会造成程序崩溃
解决办法:
/****************防止内存泄露,2种方法**********************/ label->deleteLater();//函数设置对话框关闭时,自动销毁对话框 label->setAttribute(Qt::WA_DeleteOnClose);//在当前事件循环结束时销毁该对话框 /*********************************************/
0 0
- Qt 内存泄露原因及解决办法
- .Net内存泄露原因及解决办法
- 内存泄露原因及解决方案
- JVM-内存泄露及解决办法
- Android内存泄露及解决办法
- android 内存泄露原因与解决办法
- substring内存泄露原因及解决
- Java泄露及造成内存泄露的原因
- Handler引起的内存泄露及解决办法
- Android应用内存泄露分析及解决办法
- Andorid 常见的内存泄露及解决办法
- Android 产生内存泄露的原因以及解决办法
- 关于DLL工程中存在全局变量可能导致MFC内存泄露误报的原因分析及解决办法
- 关于DLL工程中存在全局变量可能导致MFC内存泄露误报的原因分析及解决办法
- 内存泄露的原因
- 内存泄露的原因
- 。net内存泄露原因
- 内存泄露的原因
- Core Data的使用(一)
- extjs之访问store
- 替换SQL字段中的换行符,回车符
- IOS键盘的相关设置(UITextfield)
- 关于资源Resource
- Qt 内存泄露原因及解决办法
- MySQL my.cnf 配置文件注释
- Android用户界面菜单之上下文菜单(Context Menu)
- jquery 判断复选框是否全部选中
- struts2 跳转
- 基于web的android图像处理示例(Win7+Apache+PHP+Matlab+Android)http://blog.csdn.net/nupt123456789/article/detail
- 开发任务分发中的横向分发和纵向分发
- 群发“站内信”的实现
- VS2008中OpenGL环境配置