• 6502阅读
  • 4回复

qt多线程中的内存泄露问题 [复制链接]

上一主题 下一主题
离线wjz2047
 

只看楼主 倒序阅读 楼主  发表于: 2013-11-20
MainWindow::hanshu()
{
    myThread *bundlthread = new myThread;
    bundlthread->start();                     //启动一个线程,此时程序正常。
}
修改代码如下:

MainWindow::hanshu()
{
    myThread *bundlthread = new myThread;
    bundlthread->start();                     //启动一个线程
    A();     //主线程在启动线程后,自己运行函数A();
}
此时编译报内存泄露。但是单独跑A()却没有内存泄露问题,这个怎么办呢?
离线dbzhang800

只看该作者 1楼 发表于: 2013-11-20
你这两段代码都出现了new,却没有相应的 delete,都有内存泄漏。

不过内存泄漏也不是“编译”能报出来的吧?
离线wjz2047

只看该作者 2楼 发表于: 2013-11-20
回 1楼(dbzhang800) 的帖子
你是指我new Thread没delete掉?那我这样写myThread mthread; mthread.start();还是报内存泄露啊
离线dbzhang800

只看该作者 3楼 发表于: 2013-11-20
贴具体出错信息,不排除你描述有问题
离线realfan

只看该作者 4楼 发表于: 2013-11-21
回 2楼(wjz2047) 的帖子
myThread mthread; mthread.start();
这样写会有问题吧,在栈里定义一个QThread对象,开启线程。如果线程还在运行时,MainWindow::hanshu()结束, Thread对象就不在了。会出问题。
快速回复
限100 字节
 
上一个 下一个