Problème avec la fonction free dans visual basic.

Signaler
Messages postés
2
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
11 mars 2005
-
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005
-
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

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

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 ::.)~
Messages postés
2
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
11 mars 2005

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 !!!
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Salut,

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

Fabrice