附加指向QList的指针

Rou*_*uta 7 c++ qt pointers qlist

我需要将类的指针(从QObject继承)插入到QList中.我知道可以使用以下语法:

.H

QList<MyObject*> list;
Run Code Online (Sandbox Code Playgroud)

的.cpp

list.append(new MyObject("first", 1));
list.append(new MyObject("second", 2));
...
Run Code Online (Sandbox Code Playgroud)

然后释放内存:

if(!list.isEmpty())
{
    qDeleteAll(list);
    list.clear();
}
Run Code Online (Sandbox Code Playgroud)

这应该是有效的,不会导致任何内存泄漏(据我所知).但是,我需要在将对象添加到集合之前初始化对象.以下代码段是否会导致内存泄漏或悬空指针等错误(我将使用相同的方法删除上面的指针)?

MyObject *obj;

for(i = 0; i < 5; i++)
{   
    obj = new MyObject();
    if(!obj.Init(i, map.values(i)))
    {
        // handle error
    }
    else
    {
        list.append(obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

aki*_*ira 5

如果你在"// handle error"的情况下处理"obj"(已分配但未初始化的实例),你的代码就可以了.