【发布时间】:2010-02-05 00:46:50
【问题描述】:
我来自相当强大的 C 背景,并且在 C++ 方面有相当扎实的基础。最近我一直在使用 C# 和其他高级语言。我正在研究的一个项目可以从使用 QT4 中真正受益,但我对内存管理有一些我似乎无法理解的问题。我已经阅读了 QT4 文档,但对我帮助不大。所以这就是我在这里的原因。
1) 好的,首先,我知道使用 QT4 对象的最简单方法是在本地声明它们:
void MyFunc()
{
QString foo;
// do stuff to foo
}
这很简单,我可以获取那个对象,然后传递它,并且知道当它超出范围时它将被销毁。但这是我的问题。
1)如果我创建一个 QList 并向其中添加对象,然后 QList 超出范围,它会尝试释放子对象吗?
2)如果 QT4 例程返回一个指向对象的指针,那么我是否负责解除该对象的分配?
3)如果我创建一个 QWidget 的子类,并将其添加到 QWindow,我如何确保当 QWindow 被销毁时,它会带上我的小部件?
感谢您的帮助。
【问题讨论】:
-
您的一些答案在对象所有权文档中:cep.xor.aps.anl.gov/software/qt4-x11-4.2.2/objecttrees.html。
标签: c++ qt memory-management qt4