• # Principes du C++

    Posté par . En réponse au message Constructeur, destructeur, et autre.... Évalué à 1.

    Dans le cas de la fonction f1 :

    Tu déclare un pointeur local (à ta méthode, donc sur la pile) sur un objet de la classe "Objet" il n'est donc pas alloué. Tu dois donc l'allouer explicitement (l'allocation se fera sur le tas cette fois) et le constructeur que tu as spécifié sera appelé : soit ici le constructeur sans paramètre (constructeur par défaut). Tu dois aussi le détruire explicitement et le destructeur de la classe Objet sera appelé (et la mémoire dé-allouée).

    Dans le cas de la fonction f2 :

    Tu déclare un objet de la classe Objet en local de ta méthode (donc sur la pile) : le constructeur par défaut est donc appelé automatiquement. De même lorsque tu sort de ta fonction tous les objets locaux sont détruits (dé-alloués) et leur destructeurs sont appelés.

    Pour répondre à ta dernière question :

    Si tu sort de ta méthode sans delete alors le pointeur qui lui était alloué sur la pile est dépilé et est perdu : tu n'as donc plus aucune référence sur l'objet que tu as alloué. Celui-ci reste en mémoire jusqu'à la fin de ton process. C'est un bel exemple de memory leak.