以下是一个示例代码,演示了如何在Qt中释放内存并避免内存泄漏,特别是在具有对象指针属性的QList中删除对象。
#include <QList>
#include <QDebug>
class MyObject : public QObject
{
public:
MyObject(int id) : m_id(id) {}
~MyObject() { qDebug() << "Deleting MyObject" << m_id; }
private:
int m_id;
};
int main()
{
QList<MyObject*> objectList;
// 创建一些对象并将其添加到QList中
for (int i = 0; i < 5; ++i) {
MyObject* obj = new MyObject(i);
objectList.append(obj);
}
// 使用迭代器循环遍历QList,并删除对象
QList<MyObject*>::iterator it;
for (it = objectList.begin(); it != objectList.end(); ++it) {
delete *it;
}
objectList.clear(); // 清空QList
return 0;
}
在这个示例中,我们定义了一个名为MyObject
的简单类,它继承自QObject
,并具有一个int
类型的m_id
属性。在主函数中,我们创建了一个QList
对象objectList
,并使用循环将MyObject
的实例指针添加到该列表中。然后,我们使用迭代器循环遍历objectList
,并使用delete
关键字删除每个对象的指针。最后,我们调用objectList.clear()
清空QList。
请注意,为了避免内存泄漏,请确保在不再需要对象时及时删除对象,并在删除对象的指针后清空QList。