[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

  1. tes variables 'Params' et 'Value' doivent etres dans la meme fonction OU variables globales
    1. elles le sont dans la meme fonctions!!
      Merci beaucoup deja pour ta reponse!!

      Merci d'avance
      Séb
      1. donc tous le code que tu as donné se trouve dans une seule et unique fonction
        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. 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. 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