[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   -
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
A voir également:

9 réponses

sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
tes variables 'Params' et 'Value' doivent etres dans la meme fonction OU variables globales
1
ssebounet Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   6
 
elles le sont dans la meme fonctions!!
Merci beaucoup deja pour ta reponse!!

Merci d'avance
Séb
0
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
donc tous le code que tu as donné se trouve dans une seule et unique fonction
0
ssebounet Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   6
 
Oui dans une seule fonction!!

Merci d'avance
Séb
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
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
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Et
free(param);
free(values);

ca marcherait pas ?
0
ssebounet Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   6
 
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
0
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
de rien (ça provenait des traitements donc :) )
0
ssebounet Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   6
 
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
0