[C] Probleme Malloc et Free
Résolu
ssebounet
Messages postés
162
Date d'inscription
Statut
Membre
Dernière intervention
-
ssebounet Messages postés 162 Date d'inscription Statut Membre Dernière intervention -
ssebounet Messages postés 162 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous!!!
J'ai un petit soucis!!
je souhaiterai allouer de la memoire en C mais lorsque je la libère j'ai un souci!
je l alloue comme ca:
int len;
int i;
char *Params[20];
char *Value[20];
len = 20;
for(i = 0; i < len; i++)
{
Params[i] = (char*) malloc(len * sizeof(char) );
Value[i] = (char*) malloc(len * sizeof(char) );
memset(Params[i], 0, len);
memset(Value[i] , 0, len);
}
apres je rentre des valeurs dans ces deux tableaux de pointeurs puis je souhaite les libérer:
for(i = 0; i < len; i++)
{
free(Params[i]);
free(Value[i]);
}
Mais lorsque je passe sur free, le debugger me genere une erreur:
Debug Assertion Failed
file dbgheap.c
etc etc
enfin bon je ne comprend pas!!!
quelqu un aurait une idée???
Merci beaucoup d avance!!
Séb
J'ai un petit soucis!!
je souhaiterai allouer de la memoire en C mais lorsque je la libère j'ai un souci!
je l alloue comme ca:
int len;
int i;
char *Params[20];
char *Value[20];
len = 20;
for(i = 0; i < len; i++)
{
Params[i] = (char*) malloc(len * sizeof(char) );
Value[i] = (char*) malloc(len * sizeof(char) );
memset(Params[i], 0, len);
memset(Value[i] , 0, len);
}
apres je rentre des valeurs dans ces deux tableaux de pointeurs puis je souhaite les libérer:
for(i = 0; i < len; i++)
{
free(Params[i]);
free(Value[i]);
}
Mais lorsque je passe sur free, le debugger me genere une erreur:
Debug Assertion Failed
file dbgheap.c
etc etc
enfin bon je ne comprend pas!!!
quelqu un aurait une idée???
Merci beaucoup d avance!!
Séb
A voir également:
- [C] Probleme Malloc et Free
- Word 2013 free download - Télécharger - Traitement de texte
- Zimbra free - Guide
- Free office - Télécharger - Suite bureautique
- Sketchup free - Télécharger - 3D
- Bitdefender free - Télécharger - Antivirus & Antimalwares
9 réponses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est bizarre, j'ai fait ce code et ça marche!
le probleme provien peut-etre de ton traitement sur les donnees
#include <stdio.h> #include <stdlib.h> void main() { int len; int i; char *Params[20]; char *Value[20]; len = 20; for(i = 0; i < len; i++) { Params[i] = (char*) malloc(len * sizeof(char) ); Value[i] = (char*) malloc(len * sizeof(char) ); memset(Params[i], 0, len); memset(Value[i] , 0, len); } for(i = 0; i < len; i++) scanf("%s",Params[i]); for(i = 0; i < len; i++) printf("%d %s\n",i,Params[i]); for(i = 0; i < len; i++) { free(Params[i]); free(Value[i]); } }
le probleme provien peut-etre de ton traitement sur les donnees
nan deja essayer
mais en fait j ai trouver je pense!
apres avoir fait le malloc j'assignais directement les characteres!
ex:
Params[0] = "truc";
mais en fait faut faire strcpy(Params[0], "TRUC");
et la apres ca fonctionne!!!
donc faut que je change tout mon code pour utiliser les fonctions str*.
en tout cas merci bien de votre aide!!!!
Merci d'avance
Séb
mais en fait j ai trouver je pense!
apres avoir fait le malloc j'assignais directement les characteres!
ex:
Params[0] = "truc";
mais en fait faut faire strcpy(Params[0], "TRUC");
et la apres ca fonctionne!!!
donc faut que je change tout mon code pour utiliser les fonctions str*.
en tout cas merci bien de votre aide!!!!
Merci d'avance
Séb