例如:
QFile* file = new QFile...
如果没有delete file
内存泄漏?我问,因为我是Qt的新手并且正在查看我发现的一些代码,所以我想知道Qt课程是否合理?
答案 0 :(得分:2)
使用QFile,通常没有理由让它变得动态,但是 - > - >删除应该在这里,否则它会泄漏。
在Qt中,强制性规则只有一个例外“对于每个新的应该删除”。如果您正在创建父母这样的小部件:
QWidget* w = new QWidget();
QWidget* w2 = new QWidget(w);
一旦你删除w - 所有它的孩子(在我们的例子中为w2)也将被删除。这缩短了代码,但这只是一个例外。其余的东西 - 应该删除。
编辑:当然,你可以使用QScopedPointer,或者通常使用std :: unique_ptr。
答案 1 :(得分:1)
规则很简单。如果QObject
有parent
,则parent
会将其删除。如果没有,你应该自己删除它。