Problème avec la fonction free dans visual basic.

tobi222 Messages postés 2 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 11 mars 2005 - 11 mars 2005 à 01:25
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005 - 11 mars 2005 à 14:30
J'ai créé une liste chainée toute simple avec où j'alloue de la mémoire dynamiquement et à la fin lorsque je détruis cette liste avec free visual m'envoit un message d'erreur. J'ai vérifié la mémoire a bien été alloué avec la fonction malloc, et la fonction free récupère bien cette mémoire, et si je clique sur "ignorer" ds le message d'erreur le programme continue de fonctionner exactement comme je veux. Tout marche sauf ce msg d'erreur de visual.
De plus ma liste chainée comprend environ 3000 structures, et pdt leur destruction, le programme plante juste sur la destruction de 2 structures (situé ds les 1700e et 2000e position).

Merci d'avance pour votre aide.

3 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
11 mars 2005 à 03:45
Visual Basic!?!?!?!?!?!?!? T'en as fumé du bon toi ...
Ta liste chaînée, tu es sur de ne pas perdre de node?
Que malloc() n'échoue pas(j'en doute)?

Ton problème c'est que dans free(), en mode debug, il y à des `assertions`;
assert(NULL != ptr);
etc ... par exemple

si elle échoue alors il y à une raison.

char * ptr = malloc( 15 );
++ptr;
free( ptr ); /* << ca, ca va causer ce que tu as, le message d'erreur(un assert() qui échou) */

il peut y avoir plein de raison pour laquelle free() échoue ...
s'il te dis que le block n'est pas valide, alors ton pointeur
n'est pas valide, si tu lui passe NULL ou un pointeur non initialisé,
il échoue, etc ... etc ...

~(.:: NitRic ::.)~
0
tobi222 Messages postés 2 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 11 mars 2005
11 mars 2005 à 08:35
oui bien sur je voulais parler de visual c++ :s

sinon pour le malloc g mis un test juste après pour voir s'il renvoit une adresse NULL et ça n'arrive jamais.

Et j'ai regardé la structure qui fait planter le free, et ce qu'elle contient est correcte (dc je passe pas non plus o free un pointeur non initialisé). Et après la fonction free et le message d'erreur, la structure a bien été effacée !!!
0
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
11 mars 2005 à 14:30
Salut,

Met le code, ça sert à rien de parler dans le vent...

Fabrice
0
Rejoignez-nous