Utilisation de delete

Résolu
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 - 27 déc. 2004 à 10:47
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 - 28 déc. 2004 à 12:43
Bonne fête à tous !!!!

En cette fin d'année, je suis confronté à un petit pb lors que mon application se termine, j'ai une erreur en relation la mémoire lorsque je manipule des volumes importants de données. Je pense que cela vient du fait que je n'utilise pas delete.

Je stocke ces données dans une structure sous la forme suivante.

struct CmcMetaTableStruct
{
unsigned char psName[TBL_NAME_LENGTH]; // Nom de la table
CmcMetaFieldStruct ptFields[FLD_ITEM_COUNT]; // Champs
unsigned int iLogicalFieldCount; // Nombre de champ logique
unsigned int iPhysicalFieldCount; // Nombre de champ physique
};

struct CmcMetaDataStruct
{
CmcMetaTableStruct *ptTables; // Liste des tables
unsigned int iLogicalTableCount; // Nombre de table logique
unsigned int iPhysicalTableCount;// Nombre de table physique
};

J'ai donc des tableaux fixes et variables
Je fait donc

CmcMetaDataStruct* ptMetaData = new CmcMetaDataStruct;

Je compte les tables puis je fait

ptMetaData->ptTables = new CmcMetaTableStruct[Nombre de tables];

pas besoin de faire un new lorsque le table est fixe

je traite puis maintenant faut que je passe je libère la mémoire

MA QUESTION : comment on utilise delete ?

Je pensai faire

delete [Nombre de tables] ptMetaData->ptTables;

puis

delete ptMetaData;

Suis je dans le vrai ?

Nico

3 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
27 déc. 2004 à 11:25
delete [] ptMetaData->ptTables;
delete ptMetaData;

delete[] lorsque l'on fait new[...];
delete lorsque l'on fait new
3
pmbala Messages postés 30 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 2 avril 2008
27 déc. 2004 à 21:02
oui tout à fait d'accord avec toi,si ce n'est qu'il serait aussi souhaitable d'initialiser le pointeur à NULL apres le delete pour etre certain que l'espace est bien libéré!!!
YMCA2003, je tiens encore à te remercier pour mon pb des arbres binaires de ce matin,ça marche comme sur des roulettes!!!je vais d'ailleurs le poster pr en faire profiter les autres...lol
0
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 3
28 déc. 2004 à 12:43
Merci pour la réponse simple et efficace

Nico
0
Rejoignez-nous