problème de fuite mémoire - C++ - Programmation
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.
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
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 (?)
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...
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...
Marsh Posté le 09-12-2006 à 11:04:30
Quel est ton OS, ton compilateur, et la taille mémoire que ça occupe ?
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 ...)
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.
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.
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...
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.
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
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)
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 :
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