Qt下有没事儿检测内存泄露的方案
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;
这会泄露么?
[解决办法]这应该会导致运行时错误,因为没有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 单元测试框架,可以用用。