Probleme d'allocation de mémoire dynamique (malloc/free)
PhantomPowaa
Messages postés7Date d'inscriptionvendredi 27 février 2004StatutMembreDernière intervention12 mars 2004
-
4 mars 2004 à 18:29
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
9 mars 2004 à 22:02
Bonjour,
J'ai un petit probleme avec les fonctions malloc et free dans certains de mes programmes. Apparement le malloc s'effectue correctement, mais au moment de libérer la mémoire avec free, le programme créé une erreur. J'ai esayé en remplaçant malloc et free par GlobalAlloc et GlobalFree, cela ne marche pas non plus sauf dans un cas, si l'on utilise malloc AVEC GlobalFree (mais cette solution ne fonctionne qu'en mode debug, pas en release).
Petite précision, je programme avec Visual C++ NET, et sous windows (Win32 API).
Si quelqu'un à une idée de là d'ou peut provenir l'erreur, ça serait gentil de me répondre parce que je souhaiterais quand meme faire un code propre et sans code qui ne marche qu'à moitié ;)
merci d'avance pour vos réponses et vive le C++/Win32
cs_pheno
Messages postés141Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention23 mars 20051 4 mars 2004 à 18:44
Salut
tu ne ferais pas un malloc sur une chaine de caracteres??
du style malloc(sizeof(char)*strlen(chaine))
si c est
rajoute +1
malloc(sizeof(char)*strlen(chaine)+1)
car il faut compter \0
si ce n est pas ca
je ne vois pas d ou vient le probleme
@++
Chevalier Pheno Starboard, membre de la Freeman-Corp
PhantomPowaa
Messages postés7Date d'inscriptionvendredi 27 février 2004StatutMembreDernière intervention12 mars 2004 5 mars 2004 à 13:01
Merci pour vos réponses,
je vais essayer avec Virtual et Heap.
Pour ce qui est de la taille passée au malloc, ça ne vient pas de là, j'ai bien vérifié.
De plus j'ai fait quelques tests, et en activant certaines optimisations de VC NET, le programme marche sans probleme en release. En fait j'ai l'impression que ça vient des options du compilateur, faut dire que .NET est assez lourd pour ça, perso je trouve que y en a trop.
C'était bien le temps de VC+ ;) pas de prise de tete avec les options du compilo, avec NET faut d'abord débuguer les options du compilo avant le programme, vive le progres :D
MetalDwarf
Messages postés241Date d'inscriptionmardi 29 octobre 2002StatutMembreDernière intervention23 janvier 2006 9 mars 2004 à 21:47
mdr... Si ca vient d un bug du compilateur c est vraiment trop drole. Laisser passer un bug si enorme...Bon d accord peut etre qu il est super particulier, mais en tout cas je fais bien de me contenter de gcc et g++ sous Linux et VC++ 6 sous windows!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 9 mars 2004 à 22:02
Quelle idee aussi de compiler autrement qu'en release, jamais vu l'interet de mettre en debug.
VS 2003 est absolument tip top.
Faut comparer asm produit par VC6, fait pitie a cote du recent.