640 bytes, ça me parait beaucoup. Soit il y a un problème dans ta façon de mesurer, soit alors, c'est un bug.
Si tu as valgrind sous la main : $ valgrind ./a.out
Sur mon implementation, j'ai 14 bytes d'alloués pour std::string( 1, 'a' ), puis quand la chaine devient assez grande, la mémoire allouée à l'air d'être a peu près le double de celle demandée. Ceci en prévision d'agrandissement de la chaine, adaptée à une utilisation typique des chaines de caractères.
Après, à toi de voir si le cout en espace est satisfaisant dans le contexte de ton application. Si non, tu peux envisager de ne pas utiliser std::string dans ce cas la. (tu es déjà veinard d'avoir le droit au free store, non ?
)
Citation :
D'autre part des liens de tutoriaux sur le fonctionnement des strings et streams seraient bienvenus (meme dans le Stroustrup que j'ai ce n'est pas détailllé ni dans la doc de libstdc++ -ou alors je cherche comme une chèvre).
|
pour le fonctionnement des strings et streams, le BS est pas mal. Si tu veux connaitre l'implémentation de *ta* bibliothèque C++, ce n'est plus du ressort du BS (qui se base sur la norme), mais de la doc de libstdc++-v3 -- et ils ne documentent pas la stratégie de consommation mémoire de std::string.