String et fuites mémoires

String et fuites mémoires - C++ - Programmation

Marsh Posté le 16-04-2003 à 03:55:37    

salut,
bon, il doit y avoir un truc que je comprends pas ou qui foire:
 
j'avais un problème de fuite mémoire (je teste avec bcheck sous Unix), et j'ai refais un bête programme pour tester ca:

Code :
  1. string s = "arhgggg";
  2. cout << s << endl;
  3. s = "test";
  4. cout << s << endl;


Bon, ce truc me fait une fuite mémoire de 1280Bytes!
Il me semblait quand même, qu'utilisé comme ca, c'était la STL qui gérait l'allocation, et qu'il y avait pas de problème.  
J'ai quand même retesté avec des pointeurs et des new/delete, et ca semble faire la même chose.  
Donc, soit il y a un problème quelque part, soit c'est le prog bcheck qui foire...
 
Après plus de tests, si je fais:

Code :
  1. string s = "arhgggg";
  2. cout << s << endl;
  3. s = "test";
  4. cout << s << endl;
  5. string s2 = "arhgggg";
  6. cout << s2 << endl;
  7. s2 = "test";
  8. cout << s2 << endl;


ca fait toujours une seule fuite mémoire de 1280B
 
Quelqu'un a une idée sur l'origine de ce problème ?


Message édité par deltaden le 16-04-2003 à 04:01:44

---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 16-04-2003 à 03:55:37   

Reply

Marsh Posté le 16-04-2003 à 04:09:49    

j'ai refais des tests, et si à la place de mon premier string "arghhh" je met un truc plus long (de plus de 1200 caractères), alors la fuite mémoire est plus grande.
 
Ce serait une zone mémoire allouée par la STL pour y mettre tous les string ou quoi ? Mais pourquoi bcheck voit ca comme une fuite mémoire ? (d'un autre coté, je sais pas trop comment marche ce programme)
 
j'ai fait des recherches sur ce forum et sur Google, mais j'ai rien trouvé à ce sujet (bon d'accord, j'ai pas été voir tous les sites que google m'a trouvé :whistle: ...)


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 16-04-2003 à 10:51:12    

:heink: Normalement, sur les strings statiques, il n'y a pas d'allocation ...
 
Il me semble qu'elles toutes regroupées dans un endroit du segment de code ... (je ne suis pas trop sur, il faudrait l'avis d'un spécialiste) mais en aucun cas une string aussi statique que ca ne peut causer de fuite mem ... à moins de l'affecter à un char * sur lequel on a fait un malloc/calloc ou un new ...


---------------
last.fm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed