Rational Purify et le delete [ ] dans un vector

Résolu
cs_fuliculi Messages postés 43 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 3 mai 2010 - 24 mars 2006 à 14:44
cs_fuliculi Messages postés 43 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 3 mai 2010 - 27 mars 2006 à 12:09
Bonjour à tous,

j'utilise purify depuis 2 ans et il m'aide beaucoup (en particulier pour les plantages à première vue sans raison). Il y a une erreur qu'il m'affiche depuis ce temps que je n'arrive pas à supprimer : la terrible erreur du delete [ ] dans un vecteur!

Exemple :

// Création du vecteur
vector<char* nom> nomVecteur;

// Ajout d'un nom créé dynamiquement
char *nom1 = new char[256];
strcpy(nom1, "polo");
nomVecteur.push_back( nom1 );

// Ajout d'un nom créé dynamiquement
char *nom2 = new char[256];

strcpy(nom2, "anne");
nomVecteur.push_back( nom2 );

// Suppression des noms du vecteur
for (int i=0; i<nomVecteur.size(); i++)
delete [] nomVecteur[i]; // <<<<<<<< ERREUR PURIFY

// Vidage du vecteur
nomVecteur.clear();

Purify ne semble pas aimer les delete [ ] sur les éléments d'un vecteur. J'ai essayé avec plusieurs syntaxe mais pas de solution. Si je ne mets pas le delete, la mémoire n'est pas libéré alors que j'utilise des objects de plusieurs Mo (ça fait désordre) et les erreurs sont remplacée par des warning et la mémoire n'est pas libérée.

Mes programmes nécessitent une grosse utilisation des delete alors je me retrouve avec des dizaines d'erreur sous Putify et ça devient illisible.

Quelqu'un voit-il déjà de quoi je parle? Si oui, a-t-il une idée ce cher monsieur (ou chère mademoiselle ou madame).

2 réponses

Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
24 mars 2006 à 15:57
autant faire du c++ quand on en a l'occas :
(eviter les malloc sur des fonctions c++ faites pour ne plus avoir a utiliser des pointeurs)

// Création du vecteur
vector<string> nomVecteur;

// Ajout d'un nom créé dynamiquement
nomVecteur.push_back("polo");

// Ajout d'un nom créé dynamiquement
nomVecteur.push_back("anne");

// Suppression des noms du vecteur
for (int index = 0; i < nomVecteur.size(); ++index)
nomVecteur[i] = "";

// Vidage du vecteur
nomVecteur.clear();
3
cs_fuliculi Messages postés 43 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 3 mai 2010 6
27 mars 2006 à 12:09
En effet, ça me supprime les warning ou erreurs du delete. Il me reste un warning mais ça semble apparaitre à cause du #include <vector> (rien de méchant)

merci Kangourou_Nomade
0
Rejoignez-nous