我在删除 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;
这段代码导致在析构函数的执行中出现段错误,确切地说——当我试图删除包装器时。
我做了一些研究,我知道:
- QSProject 没有删除他的“子对象”,所以这不是“双重删除”问题
- 如果我不在构造函数中将包装器添加到 QSProject,它会运行良好。
- 如果我不删除析构函数中的包装器,它运行良好(但内存泄漏)。
这是怎么回事?