[C] Probleme Malloc et Free

Résolu
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

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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
      1. 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
        1. donc tous le code que tu as donné se trouve dans une seule et unique fonction
          1. elles le sont dans la meme fonctions!!
            Merci beaucoup deja pour ta reponse!!

            Merci d'avance
            Séb
            1. tes variables 'Params' et 'Value' doivent etres dans la meme fonction OU variables globales