Russian Qt Forum

Qt => Общие вопросы => Тема начата: semlanik от Февраль 16, 2010, 16:20



Название: Сборка мусора в qt[solved]
Отправлено: semlanik от Февраль 16, 2010, 16:20
Не очень понял, прочел немного майллистов и литры и так и не понял,а как он вообще работает или работает ли вообще. Приведу пример, рассудите прав я или нет:

Код
C++ (Qt)
class Main : public QObject
{
   void someObject()
  {
      Slave *xObj=new Slave(); // inherit QObject
  }
}
 
int main(int argc, char *argv[])
{
   Main *mainObj=new Main;
   for(i=0; i<100; i++)
   {
       mainObj.someObject();
   }
   //here we have 100 copies Salve objects
 
   delete mainObj;
   //here we still have 100 copies Salve objects
 
   return 0;
}
 

но если переделать метод вот так:

Код
C++ (Qt)
class Main : public QObject
{
   void someObject()
  {
      Slave *xObj=new Slave(this); // inherit QObject and have constructor Slave(QObject *parent)
  }
}
 
int main(int argc, char *argv[])
{
   Main *mainObj=new Main;
   for(i=0; i<100; i++)
   {
       mainObj.someObject();
   }
   //here we have 100 copies Salve objects
 
   delete mainObj;
   //all copies was cleaned
 
   return 0;
}

если я абсолютно не прав скажите где можно почитать


Название: Re: Сборка мусора в qt
Отправлено: MoPDoBoPoT от Февраль 16, 2010, 16:36
Все верно.
Только это не "сборка мусора" (как в Java, например). Это механизм объединения объектов в иерархические структуры, одной из задач которого является снятие забот об освобождении памяти создаваемых объектов с разработчика.


Название: Re: Сборка мусора в qt
Отправлено: semlanik от Февраль 16, 2010, 16:43
Спасибо просто в мэйл листах некоторые бьют себя кулаком и говорят что у qt сборщик мусора есть ) Ну это своеобразная реализация оного ) в общем в принципе для себя уяснил. спасибо!