Sono abbastanza nuovo in Qt e mi chiedo alcune cose di base con la gestione della memoria e la vita degli oggetti. Quando devo eliminare e / o distruggere i miei oggetti? Tutto questo viene gestito automaticamente?
Nell'esempio seguente, quale degli oggetti che creo devo eliminare? Cosa succede alla variabile di istanza myOtherClass
quando myClass
viene distrutta? Cosa succede se non elimino (o distruggo) i miei oggetti? Sarà un problema per la memoria?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Come puoi vedere, questa è roba abbastanza facile per i principianti, ma dove posso apprenderla in modo semplice?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Questo non è il motivo per cui è sicuro. In Qt 4.7.4, i figli di QObject vengono eliminati direttamente (tramitedelete
, vedere qobject.cpp, riga 1955). Il motivo per cui è sicuro eliminare prima gli oggetti figlio è che un QObject dice al suo genitore di dimenticarlo quando viene eliminato.