std::string -> liberation mémoire
Bonjour tout le monde,
Je viens avec un problème que je cherche à résoudre.
J'ai un programme de test tout simple avec un std::string dans lequel je mets environ 11k caractères.
je check la mémoire à plusieurs endroits et je m'aperçois que le nombre d'octet occupé ne diminue pas à la destruction de la string.
Problème gênant qu'il n'y a pas avec les char*
voila mon petit code de test:
(memory affiche la memoire en bytes)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
std::string & clearing(std::string& str2)
{
std::string* str = new std::string;
str2.swap(*str);
str->clear();
delete str;
return str2;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << "memory : " << memory() << std::endl;
std::string str2("PouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouh");
std::cout << "memory : " << memory() << std::endl;
clearing(str2);
std::cout << "memory : " << memory() << std::endl;
_getch();
return 0;
} |
Voila ce que j'obtiens :
Citation:
memory : 2433024
memory : 2609152
memory : 2621440
La mémoire augmente constamment. Pas moyen de la faire diminuer. Je pense qu'il s'agit d'un problème d'allocateur de la string, mais aucune idée de leur fonctionnement...
Est-ce bien ça?
Quel est la façon de voir la chose pour la stl concernant ce "problème"?
Y a t il moyen de libérer correctement?
Merci