例如:
QFile* file = new QFile...
如果没有删除文件
是内存泄漏吗?我问是因为我是 Qt 的新手,在查看一些代码时我发现了这个,所以我想知道这对 Qt 类来说是否合理?
最佳答案
使用QFile,通常没有理由让它成为动态的,但是是的->删除应该在这里,否则它会泄漏。
在 Qt 中,“对于每个新的都应该删除”的强制性规则只有一个异常(exception)。
如果您像这样使用父级创建小部件:
QWidget* w = new QWidget();
QWidget* w2 = new QWidget(w);
一旦您删除了 w - 它的所有子项(在我们的示例中为 w2)也将被删除。这缩短了代码,但这只是一个异常(exception)。其余内容 - 应删除。
已编辑:当然,您可以使用 QScopedPointer,或通常的 std::unique_ptr。
关于c++ - qt类什么时候作为智能指针使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28555278/