Bonjour à tous,
voici un bout de code que j'ai programmé, il fonctionne mais je ne comprends pas pourquoi
Quand la fonction a été lue, que devient le pointeur pElmt ? CE QUE JE CROIS, c'est que c'est une variable temporaire créée dans une fonction, donc sa portée reste la fonction. Autrement dit, la zone pointée doit être détruite à la sortie de la fonction, le destructeur de CElmt devant être appelé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int CNode::Insert() { CElmt* pElmt = new CElmtInt(5); // CElmtInt dérive de CElmt qui contient // une fonction virtuelle pure Element = pElmt; // Element est un pointeur sur un CElmt return 1; }
Eh bien je me plante, car j'ai testé pour voir si le destructeur de CElmt (ou celui de CElmtInt) est appelé, mais non !!! De plus, en dehors de la fonction, Element pointe sur la même zone mémoire que je viens de créer.
C'est vraiment bizarre, je viens de créer dans une fonction une variable dont la zone pointée n'est pas détruite en fin de fonction. Quelqu'un pourrait-il m'expliquer ?
Je vous remercie par avance.
Partager