Eu sou muito novo no Qt e estou pensando em algumas coisas básicas com gerenciamento de memória e a vida dos objetos. Quando preciso excluir e / ou destruir meus objetos? Algo disso é tratado automaticamente?
No exemplo abaixo, qual dos objetos que crio devo excluir? O que acontece com a variável de instância myOtherClass
quando myClass
é destruída? O que acontecerá se eu não excluir (ou destruir) meus objetos? Isso será um problema para a memória?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Como você pode ver, isso é algo fácil para iniciantes, mas onde posso aprender sobre isso de maneira fácil?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Esta não é a razão pela qual é seguro. No Qt 4.7.4, os filhos do QObject são excluídos diretamente (viadelete
, consulte qobject.cpp, linha 1955). A razão pela qual é seguro excluir objetos filho primeiro é que um QObject diz a seu pai para esquecê-lo quando for excluído.