Я зовсім новачок у Qt, і мені цікаво про деякі основні речі з управління пам’яттю та життям об’єктів. Коли потрібно видаляти та / або знищувати свої об'єкти? Чи обробляється що-небудь із цього автоматично?
У прикладі нижче, який із створених мною об’єктів мені потрібно видалити? Що відбувається зі змінною екземпляра myOtherClass
при myClass
знищенні? Що станеться, якщо я взагалі не видалю (або не знищую) свої об’єкти? Це буде проблемою для пам'яті?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Як бачите, це досить легкі речі для новачків, але де я можу про це дізнатися простим способом?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Це не причина, чому це безпечно. У Qt 4.7.4 діти QObject видаляються безпосередньо (черезdelete
, див. Qobject.cpp, рядок 1955). Причиною того, чому безпечно спочатку видаляти дочірні об’єкти, є те, що QObject каже батькові забути його, коли його видаляють.