liberer memoire avec destruction derivee

Le
dug8C
bonjour,

Je voudrais avoir une confirmation, si lorsque je détruis le pointeur
d'une classe de base, je détruis bien la totalité de la mémoire
allouée pour la classe qui en dérive.
exemple:

class CBase
{
/* divers membres */
};

class CDerive : public CBase
{
/*divers autres membres */
};


/* */

dans le main :

CBase* pBase;
pBase = new CDerive;

delete pBase;

Est ce que la mémoire allouée par new est bien restituée en
intégralité ou bien est-ce que je ne libère que la partie de CBase ?

mon but est de stocker dans un container des pointeurs de CBase pour
gérer des CDerive ( construction et suppression )
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Mathias Gaunard
Le #309814
bonjour,

Je voudrais avoir une confirmation, si lorsque je détruis le pointeur
d'une classe de base, je détruis bien la totalité de la mémoire
allouée pour la classe qui en dérive.
exemple:

class CBase
{
/*--- divers membres */
};

class CDerive : public CBase
{
/*---divers autres membres */
};


/* --- */

dans le main :

CBase* pBase;
pBase = new CDerive;

delete pBase;


Il s'agit d'un comportement indéfini, sauf si le destructeur de CBase
est virtuel.

S'il est bien virtuel, aucun soucis.

dug8C
Le #309689
On 24 juil, 21:12, Mathias Gaunard



bonjour,

Je voudrais avoir une confirmation, si lorsque je détruis le pointeur
d'une classe de base, je détruis bien la totalité de la mémoire
allouée pour la classe qui en dérive.
exemple:

class CBase
{
/*--- divers membres */
};

class CDerive : public CBase
{
/*---divers autres membres */
};

/* --- */

dans le main :

CBase* pBase;
pBase = new CDerive;

delete pBase;


Il s'agit d'un comportement indéfini, sauf si le destructeur de CBase
est virtuel.

S'il est bien virtuel, aucun soucis.


Oui effectivement j'ai oublié de mentinonner le destructeur virtuel de
CBase.

Ok merci pour la réponse.


Publicité
Poster une réponse
Anonyme