我应该采取什么方式使用 qt:all 类继承自 QObject 或删除 新后手动删除
What way should I take with qt:all classes inherit from QObject or delete Manually after new?
有一些问题让我感到困惑:1.
QLabel *label = new QLabel(this);
//or
QLabel *label = new QLabel;
//if I forgot to set label as a child of other widget, it causing a memory leak?
阿拉伯数字。
QList<MyClass> myList;
MyClass *my = new MyClass;
myList.append(*my);
//is necessary?
delete my;
那么,我应该采取什么方式来使用qt呢?所有类都继承自 QObject 还是删除 新后手动?还是使用Qt智能指针?请帮助我,非常感谢...
如何在C++中分配对象取决于预期的生命周期,Qt不会改变这一点。所以,是的,在情况 1 中,第二个标签被泄露,因为它的生命周期与this
无关
在 csae 2 中,您使用的是不必要的堆分配。只是写
{
QList<MyClass> myList;
MyClass my; // Local scope
myList.append(my);
}
甚至更简洁:
{
QList<MyClass> myList;
myList.append( MyClass() ); // Unnamed object, can be moved into myList.
}
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 删除 QSharedPointer 指向的 QObject
- 删除 QObject 后 Qt 信号仍在触发
- 我应该在使用后删除 QObject 指针吗?
- 从 QObject 中删除动态属性
- Qt - 堆栈上具有父级的 QObject 如何被删除两次?
- 我应该采取什么方式使用 qt:all 类继承自 QObject 或删除 新后手动删除
- 删除时,QObject是否区分堆栈和堆分配的子级
- 在信号/插槽处理过程中删除QObject
- 正确的方式断开信号从两个qobject不被销毁/删除