Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QLIST список указателей

Автор: denisKazachkov 26.6.2012, 15:25

Добрый день Уважаемые разработчики. У меня следующий вопрос...
есть функция:

void setO()
{
   MyO *obj = new MyO();
   QList<MyO*> list;
   list.append(obj);
   return list;
}


По завершению этой функции освободится ли память от объекта obj или надо удалять вручную
delete obj;
??????

Автор: ilyabvt 26.6.2012, 16:14

Цитата
По завершению этой функции освободится ли память от объекта obj или надо удалять вручную
delete obj;

От obj освободиться, а вот от объекта на который он указывает нет. Таки да, придется удалять вручную:
delete obj;

QList на это кстати никак не влияет. Он удаляет только объекты внутри контейнера и не переходит по ссылкам, даже если заполнен ими.

Автор: denisKazachkov 28.6.2012, 11:06

Цитата(ilyabvt @ 26.6.2012, 17:14) *
Цитата
По завершению этой функции освободится ли память от объекта obj или надо удалять вручную
delete obj;

От obj освободиться, а вот от объекта на который он указывает нет. Таки да, придется удалять вручную:
delete obj;

QList на это кстати никак не влияет. Он удаляет только объекты внутри контейнера и не переходит по ссылкам, даже если заполнен ими.

Спасибо, помогли! :)

Автор: denisKazachkov 28.6.2012, 19:31

Еще такой вопрос.
Когда мы пишем delete obj;
Вызывается дестурктор объекта obj?

Автор: Алексей1153 28.6.2012, 19:43

да, вызывается

Автор: denisKazachkov 4.7.2012, 12:50

Цитата(Алексей1153 @ 28.6.2012, 20:43) *
да, вызывается

Спасибо.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)