Tim*_*dge 5 c++ qt memory-management qt4
我来自一个相当强大的C背景,并且在C++中有相当坚实的基础.最近我一直在使用C#和其他更高级别的语言.我正在研究的项目可以从使用QT4中获益,但我对内存管理有一些问题,我似乎无法理解.我已经阅读了QT4文档,但对我没什么帮助.所以这就是我在这里的原因.
1)好的,首先,我了解使用QT4对象的最简单方法是在本地声明它们:
void MyFunc()
{
QString foo;
// do stuff to foo
}
Run Code Online (Sandbox Code Playgroud)
这很简单,我可以拿走那个对象,并传递它,并知道当它超出范围时它将被销毁.但这是我的问题.
1)如果我创建一个QList并向其添加对象,然后QList超出范围,它是否会尝试释放子对象?
2)如果QT4例程返回指向对象的指针,那么我是否负责取消该对象的分配?
3)如果我创建QWidget的子类,并将其添加到QWindow,我如何确保在QWindow被销毁时,它需要我的小部件?
谢谢您的帮助.
rpg*_*rpg 13
如果我创建一个QList并向其添加对象,然后QList超出范围,它是否会尝试释放子对象?
QList就像std :: list一样.它会在被破坏时销毁所包含的对象.
如果Qt4例程返回指向对象的指针,那么我是否负责该对象的取消分配?
通常不会,文档应该指明发生了什么.take*函数是一个例外(例如:QTableWidget :: takeItem).
如果我创建一个QWidget的子类,并将其添加到QWindow,我如何确保在QWindow被销毁时,它需要我的小部件呢?
这取决于您如何创建子类对象.
当一个QWidget(或任何QObject)被销毁时,它会从其父级的删除列表中删除它,这样你就可以自己删除它而不用担心双重删除.