problème de fuite mémoire

problème de fuite mémoire - C++ - Programmation

Marsh Posté le 08-12-2006 à 19:12:15    

Bonjour,  
   Bon, j'ai un petit soucis : voilà dans un de mes programme je fais un truc qui ressemble a ça :
 

Code :
  1. #include<iostream>
  2. #include<string>
  3. #include<boost/timer.hpp>
  4. #include<boost/lexical_cast.hpp>
  5. int main()
  6. {
  7. boost::timer t;
  8. t.restart();
  9. std::string s;
  10. while(true)
  11. {
  12.  s = std::string("time : " ) + boost::lexical_cast<std::string>(t.elapsed());
  13. }
  14. return 0;
  15. }


 
et quand je regarde le gestionnaire des taches je vois que la mémoire utilisé par ce truc ne fait que croitre et a très grande vitesse... j'avoue ne pas comprendre pourquoi. Normalement là je n'utilise que des outils sécurisés, donc je croyais que j'avais aucune chance d'avoir de fuite mémoire...
aussi si vous avez une idée
 
Merci :)
 

Reply

Marsh Posté le 08-12-2006 à 19:12:15   

Reply

Marsh Posté le 08-12-2006 à 19:51:01    

il n'y a pas de fuite dans ce programme. Laisse-le tourner indéfiniement, tu verras que ça ne satureras pas ta mémoire. C'est juste l'os qui doit pas se forcer à libérer, surtout si c'est le seul prog que t'exécutes.

Reply

Marsh Posté le 08-12-2006 à 19:55:45    

ok,  
   ça m'inquiétais de voir que ça croissait comme ça. Je croyais que ça allais pas s'arrêter...
 
Merci :)

Reply

Marsh Posté le 08-12-2006 à 21:24:29    

Si ce programme consomme une mémoire démesurée, c'est peut-être qu'il y a un bug quelque part (?)

Reply

Marsh Posté le 09-12-2006 à 09:54:05    

Bren, oui mais c'est justement ces quelques lignes qui font ça. Si tu compile mon exemple on peut justement observer ce problème...

Reply

Marsh Posté le 09-12-2006 à 10:08:01    

je n'observe pas pas ce phénomène sur ma machine.

Reply

Marsh Posté le 09-12-2006 à 10:54:13    

Ben, j'avoue que je sais pas quoi dire... car quand je compile un projet qui contient que ça et bien, moi ça le fait....
Mais bon, apriori c'est comme Jesus_christ a dit : c'est que mon OS qui ne doit pas vouloir libérer la mémoire, tout de suite...

Reply

Marsh Posté le 09-12-2006 à 11:04:30    

Quel est ton OS, ton compilateur, et la taille mémoire que ça occupe ?

Reply

Marsh Posté le 09-12-2006 à 11:26:17    

Ben, mon OS c'est WinXP, le compilo c'est celui de Visual Studio 2005, et la mémoire qu'il prend c'est justement pas constant (je l'ai laisse croitre jusqu'à 200Mo et je le sentais bien capable de continuer ...)

Reply

Marsh Posté le 09-12-2006 à 12:00:51    

Ben laisse le tourner encore, et regarde jusqu'où ça monte. Si ce n'est pas une fuite, c'est bien imité. 200 Mo de mémoire, ce n'est pas normal et c'est probablement un bug:
1 - de Boost
2 - de Visual
3 - de WinXP
 
Adresse toi à Boost voir ce qu'ils disent.

Reply

Marsh Posté le 09-12-2006 à 12:00:51   

Reply

Marsh Posté le 09-12-2006 à 12:15:15    

Dans le gestionnaire des tâches ça bouffe environ 700 ko/s supplémentaire sur ma machine.
 
lexical_cast utilise std::stringstream qui est buggé avec VC++ 2005 (et apparemment ça remonte à std::basic_iostream):
 
http://forums.microsoft.com/MSDN/S [...] 1&SiteID=1
 
http://connect.microsoft.com/Visua [...] ckID=98861
 
Je ne comprends pas comment MS peut laisser un bug comme ça trainer pendant 1 an.


Message édité par verdoux le 09-12-2006 à 12:31:58
Reply

Marsh Posté le 09-12-2006 à 12:28:22    

Je confirme que ça viens bien de Visual car Code::Block n'a pas de problème lui.
 
Sinon, en fait je viens de voir que ça le fait que quand je compile en mode debug. En release ça ne le fait plus... c'est bizarre quand même...  

Reply

Marsh Posté le 09-12-2006 à 12:31:14    

Chez moi, ça le fait aussi en release.

Reply

Marsh Posté le 10-12-2006 à 02:03:01    

exact, par contre chez moi ça le fait pas en release.
 
il faudrait regarder chez ms si y'a un patch.

Reply

Marsh Posté le 10-12-2006 à 10:07:49    

Salut,
 
J'aurais une petite question : quand vous dites que ça remonte à std::basic_iostream ça veut dire que toutes les entrées/sortie vont fuir ?
Par ce que là je viens de voir que j'ai le même problème avec fstream... cela viens donc de la même raison ?
 
au passage quelqu'un a trouvé le patch, par ce que moi je ne l'ai pas trouvé...
 
 
Merci

Reply

Marsh Posté le 10-12-2006 à 14:24:14    

ça pourrait être un Heisenbug (tout de suite les beaux mots) dû à la compilation en debug ? (c'est marrant verdoux, parceque sur ce bout de code, j'ai pas le prob en release)

Reply

Marsh Posté le 10-12-2006 à 15:48:23    

oui, moi aussi en Release tout va bien....

Reply

Sujets relatifs:

Leave a Replay

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