Я новичок в 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 дочерниеdelete
элементы QObject удаляются напрямую (через , см. Qobject.cpp, строка 1955). Причина, по которой сначала безопасно удалять дочерние объекты, заключается в том, что QObject сообщает своему родительскому объекту забыть его при удалении.