50 votes

Comment libérer correctement un std :: string de la mémoire

Quelle est la meilleure façon de supprimer une std::string de la mémoire allouée sur le tas lorsque j'ai fini de l'utiliser ? Merci!

9voto

The Communist Duck Points 2700
std::string foo("since it's on the stack, it will auto delete out of scope");

ou:

 std::string* foo = new std::string("allocated on the heap needs explicit destruction")
delete foo;

4voto

Oli Charlesworth Points 148744

Utilisez delete s'il est sur le tas, et rien du tout s'il est sur la pile.

1voto

Lie Ryan Points 24517
void foo() {
    string* myString = new string("heap-allocated objects are deleted on 'delete myString;'");
    cout << *myString << endl;
    delete myString;
}

ou mieux encore, évitez les pointeurs lorsque cela est possible et utilisez des variables automatiques :

 void foo() {
    string myString("stack-allocated string is automatically deleted when myString goes out of scope");
    cout << myString << endl;
}

0voto

yu quan Points 33

traitez simplement std::string comme n'importe quel type de base.

 std::string *str = new std::string("whatever");
///code
delete str;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X