6 votes

quand la mémoire sera-t-elle libérée ?

J'ai créé un bloc de code, comme ceci.

proc()
{
    Z* z = new Z();
}

maintenant le pointeur déclaré dans la méthode proc n'aura de portée que jusqu'à proc. Je veux savoir quand le DTOR pour z sera appelé automatiquement, soit lorsque les contrôles sortent de la méthode proc, soit lorsque mon application est fermée.

1voto

Aamir Points 8357

Le destructeur de Z ne sera pas appelé si vous ne mettez pas une ligne comme celle-ci dans votre code :

delete z;

1voto

Claptrap Points 21299

Lorsque vous utilisez new, l'objet est alloué sur le tas, le tas est partagé entre toutes les fonctions de votre programme, c'est-à-dire qu'on peut dire, de façon un peu vague, que la portée des objets alloués sur le tas est votre programme, donc si vous ne supprimez pas l'objet, il existera jusqu'à la fin de votre programme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X