[英]When does qt classes work as smart pointers
例如:
QFile* file = new QFile...
如果没有delete file
,是否发生内存泄漏? 我问是因为我是Qt的新手,并且正在查看一些找到的代码,所以我想知道这对Qt类是否合理?
使用QFile,通常没有理由使其动态化,但是可以-> delete应该在此处,否则它将泄漏。
在Qt中,强制性规则只有一个例外:“每个新的都应删除”。
如果要使用父级创建窗口小部件,如下所示:
QWidget* w = new QWidget();
QWidget* w2 = new QWidget(w);
一旦删除w-它的所有子对象(本例中为w2)也将被删除。 这样可以缩短代码,但这只是一个例外。 其余的东西-应该删除。
编辑:当然,您可以使用QScopedPointer或通常的std :: unique_ptr。
规则很简单。 如果QObject
有一个parent
则它将被parent
删除。 如果没有,您应该自己删除它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.