Мне нужно вставить указатели классов (унаследованных от QObject) в QList. Я знаю, что можно использовать следующий синтаксис:
.h
QList<MyObject*> list;
.cpp
list.append(new MyObject("first", 1));
list.append(new MyObject("second", 2));
...
а затем освободить память:
if(!list.isEmpty())
{
qDeleteAll(list);
list.clear();
}
Это должно быть действительным и не вызывает утечек памяти (насколько мне известно). Однако мне нужно инициализировать объекты, прежде чем добавлять их в коллекцию. Может ли следующий фрагмент кода вызвать некоторые ошибки, такие как утечка памяти или висячие указатели (я буду использовать тот же способ удаления указателей, что и выше)?
MyObject *obj;
for(i = 0; i < 5; i++)
{
obj = new MyObject();
if(!obj.Init(i, map.values(i)))
{
// handle error
}
else
{
list.append(obj);
}
}
Спасибо.