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

Qt下有没事儿检测内存泄露的方案

2013-07-09 
Qt下有没什么检测内存泄露的方案?有时候写代码,难免会忘记delete自己申请的内存比如这样int main(int argc

Qt下有没什么检测内存泄露的方案?
有时候写代码,难免会忘记delete自己申请的内存

比如这样


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    int *x;  // 一直没释放
    *x = 123;
    
    return a.exec();
}


有没什么相关方案能给开发者提供一些信息,告诉我们哪里有泄露的情况
[解决办法]
valgrind
[解决办法]
int *x;  // 一直没释放
    *x = 123;
这会泄露么?
[解决办法]
引用:
int *x;  // 一直没释放
    *x = 123;
这会泄露么?

这应该会导致运行时错误,因为没有new来申请内存,谈不上泄露
[解决办法]
QT下当对象的父类或间接父类是QObject时,当离开对象的生存期时,QObject会自动回收new出来的内存。
 int *x;  // 一直没释放
    *x = 123;
*x是一个未知的内存,使用1个未知的内存会导致程序出现不可预知的结果。

正确使用应是:
int *x = new int;
*x = 123;

不用时,
应delete x;


[解决办法]
linux 平台没有疑问的使用qt creator 中配置valgrind。
windows 可以搭建远程的valgrind 配合 qt ctreator
[解决办法]
不过Qt提供了 Qtestlib  单元测试框架,可以用用。

热点排行