繁体   English   中英

qt类何时可用作智能指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM