[C] Probleme Malloc et Free
Résolu
ssebounet
Messages postés
163
Statut
Membre
-
ssebounet Messages postés 163 Statut Membre -
ssebounet Messages postés 163 Statut Membre -
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
9 réponses
-
tes variables 'Params' et 'Value' doivent etres dans la meme fonction OU variables globales
-
elles le sont dans la meme fonctions!!
Merci beaucoup deja pour ta reponse!!
Merci d'avance
Séb -
donc tous le code que tu as donné se trouve dans une seule et unique fonction
-
-
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!
#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 -
Et
free(param); free(values);
ca marcherait pas ? -
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 -
-
ouaip exactement
je pensais qu on pouvait enregistrer un 'string' directement mais il faut passer par strcpy!!!
voilou pour ceux qui ont ce pbm c est regler!!!
lol
merci a vous tous en tout cas!!
Merci d'avance
Séb