Posez votre question Signaler

[C] Probleme Malloc et Free [Résolu]

ssebounet 143Messages postés 21 mars 2002Date d'inscription - Dernière réponse le 9 mai 2005 à 12:08
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
Lire la suite 

[C] Probleme Malloc et Free »

Suggestions
9 réponses
Réponse
+0
moins plus
tes variables 'Params' et 'Value' doivent etres dans la meme fonction OU variables globales
Ajouter un commentaire
Réponse
+0
moins plus
elles le sont dans la meme fonctions!!
Merci beaucoup deja pour ta reponse!!

Merci d'avance
Séb
Ajouter un commentaire
Réponse
+0
moins plus
donc tous le code que tu as donné se trouve dans une seule et unique fonction
Ajouter un commentaire
Réponse
+0
moins plus
Oui dans une seule fonction!!

Merci d'avance
Séb
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Et
free(param);
free(values);

ca marcherait pas ?
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
de rien (ça provenait des traitements donc :) )
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « [C] Probleme Malloc et Free » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?