Je suis assez nouveau sur Qt et je me pose des questions sur certains éléments de base avec la gestion de la mémoire et la vie des objets. Quand dois-je supprimer et / ou détruire mes objets? Est-ce que tout cela est géré automatiquement?
Dans l'exemple ci-dessous, lequel des objets que je crée dois-je supprimer? Qu'arrive-t-il à la variable d'instance myOtherClass
lorsqu'elle myClass
est détruite? Que se passe-t-il si je ne supprime pas (ou ne détruit) pas du tout mes objets? Est-ce que ce sera un problème de mémoire?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MaClasse.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Comme vous pouvez le voir, c'est assez facile pour les débutants, mais où puis-je en apprendre davantage à ce sujet de manière simple?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Ce n'est pas la raison pour laquelle il est sûr. Dans Qt 4.7.4, les enfants QObject sont supprimés directement (viadelete
, voir qobject.cpp, ligne 1955). La raison pour laquelle il est sûr de supprimer d'abord les objets enfants est qu'un QObject dit à son parent de l'oublier lorsqu'il est supprimé.