portée d'une variable temporaire.
Bonjour à tous,
voici un bout de code que j'ai programmé, il fonctionne mais je ne comprends pas pourquoi
Code:
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;
} |
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é.
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.