Мне нужно вставить указатели классов (унаследованных от 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);
}
}
Спасибо.