Vector

Signaler
Messages postés
198
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
15 février 2005
-
Messages postés
198
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
15 février 2005
-
Bojour à tous,
Voilà mon problème, j'ai un vector de vector de string. Je me demandais si pour vider la totalité du tableau il fallait déja vider le vector de string où si j'avais juste à vider le vector principale.
Pour que ce soit plus clair voici les 2 soluces.
La première ne va-elle pas garder de la mémoire allouée?
Merci.

Soluce 1:
this->m_TabRetourRequete.clear();

Soluce 2:
//vide les colonnes
for(
int i=0; i< m_TabRetourRequete.size() ; i++){

this->m_TabRetourRequete[i].clear();
}

//vide les enregistrements
this->m_TabRetourRequete.clear();
}

Cmill

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
118
Il faut tout d'abord vider les sous-vecteurs, sinon tu auras une fuite mémoire !

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Si tu stockes des objets std::string dans tes vecteurs et non des char*, la première solution est la bonne.

Kaid - kaid.fr.st
Messages postés
198
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
15 février 2005

Ok merci kaid, mais pkoi est-ce bon avec des string et non des char*
Cmill
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
parce que le destructeur de std::string est appélé quand tu fais ton
clear() alors que tes char* ne serons pas libèrée automatiquement.

toutes les classes de la stl sont sécurisées, ce n'est en aucun cas à l'utilisateur de s'occuper de la libération de mémoire.
Messages postés
198
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
15 février 2005

ok merci

Cmill