我在删除QSA的引用对象时遇到了一些问题。在构造函数中,我写道:
QSProject * project = {initialization of QSProject}
MyWrapper * wrapper = new MyWrapper; // MyWrapper is QObject's child. It comes without parent here
project->addObject(wrapper);
我在“脱衣舞者”中写道:
project->clearObjects();
delete project;
delete wrapper;
当我试图删除包装时,这段代码会导致析构函数执行时出现分段错误。
我做了一些研究,我知道:
出什么事啦?
发布于 2011-04-25 08:35:17
首先,我不熟悉QSA,但考虑到QSA通常的工作方式,QSProject很可能会拥有对象的所有权。这意味着QSProject正在使用QObject::setParent()修复对象。
在这种情况下,您将加倍删除对象。
您是否已经用像valgrind这样的工具来验证,当您省略删除时,您实际上是在泄漏内存?
https://stackoverflow.com/questions/5778949
复制