Probleme memoire vector

cs_raphael59540 Messages postés 7 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 10 mars 2011 - 27 août 2008 à 17:33
cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 - 28 août 2008 à 01:24
bonjour


je rencontre des problèmes de mémoire avec mon utilisation de vector, je vous transmets nom utilisation.
Pouvez vous m'aider a resoudre mes problèmes?



typedef std::vector<char*> CharVector;


.... code
 CharVector* OrderField;
OrderField = new CharVector(0);


.
.//code
.
AjoutElement(OrderField ,cle);
.
.//code
.
 VideVector(OrderField);
.
.

void AjoutElement(CharVector* Out,char* Chaine)
{
 char* temp; 
Out->reserve(Out->size()+1);
temp =new char[strlen(Chaine)+1];
strcpy(temp,Chaine);
Out->push_back(temp);


}
void VideVector(CharVector* In)
{
 for(int i=In->size()-1;i>=0;i--)
 {
 delete (char*)In->at(i); 
 In->erase(&In->at(i));
 
 }
 delete (CharVector*)In;
 In=NULL;
}
R2d2

1 réponse

cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 2
28 août 2008 à 01:24
Salut,

1/ tu mélanges les genres : STL et librairies C ; si tu utilises la STL, préfère, alors, les std::string aux C-style string.
2/ il est souvent inutile d'allouer dynamiquement ( avec l'opérateur new ) les conteneurs de la STL.
3/ si tu utilises les std::string, les fonctions de ton code perdent de leur intérêt :

#include <vector>
#include <string>
#include

int main()
{
    std::vector< std::string > v;

    char titi[] = "titi";
    char * kiki = "kiki";

    v.push_back( titi );
    v.push_back( kiki );
    v.push_back( "toto" );

    for ( size_t i = 0 ; i < v.size() ; i++ )
    {
        std::cout << v[ i ] << std::endl;
    }
    v.clear();
}
0
Rejoignez-nous