• 4567阅读
  • 4回复

[提问]有谁碰到过吗,退出ui的时候报heap的错误 [复制链接]

上一主题 下一主题
离线darkeria
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-10
小弟的程序在退出一个窗口的时候delete了ui,然后qt creator 输出:

HEAP[ACCA.exe]:
Heap block at 0B0C8268 modified at 0B0C8298 past requested size of 28

谁知道这是怎么产生的吗,怎么调试呢?
离线wxj120bw

只看该作者 1楼 发表于: 2011-12-11
回 楼主(darkeria) 的帖子
调式下在那个函数抱这个错误 从堆栈列表看

离线darkeria
只看该作者 2楼 发表于: 2011-12-13
把所有的函数跟对象都注释了一遍,终于确定是一个QStringListModel的问题。代码如下:
    ObjectModel = new QStringListModel;
    ObjectModel->setStringList(objectlist);
    ui->listView->setModel(ObjectModel);
现在的问题是,这段代码在其他的部件窗口里是没问题的,怎样确定究竟是哪里出错了呢?
离线wxj120bw

只看该作者 3楼 发表于: 2011-12-13
回 2楼(darkeria) 的帖子
既然这段代码在其他地方没有问题 说明出错可能与其他代码作用的结果(猜的) 栈上通常不是由程序员维护 你重新编译下项目再说
离线ninsun

只看该作者 4楼 发表于: 2011-12-13
这种情况一般是自己删除了本来应该由Qt管理的对象的缘故.
如果某个对象(QObject和其派生类的对象)拥有父类,或者诸如QGraphicsItem添加到了某个Scene里面, 则这个对象就不应该由自己删除, 应该交由Qt自动帮你删除才行.
仔细检查一下吧, 如果放着不管等对象变多了就麻烦了...
快速回复
限100 字节
 
上一个 下一个