J'ai une structure "ListStruct" qui est fondamentalement un tableau dynamique d'une structure "Info". Voici comment je crée le ListStruct:Libérer un tableau dynamique de Char *
void initArray(ListStruct *a, size_t initialSize)
{
a->array = malloc(initialSize * sizeof(Info));
a->used = 0;
a->size = initialSize;
}
Le struct "Info" a quelques ints en elle et il a un KEYSIZE int et une clé char *. Voici comment j'attribuer le signe « char * clé » dans la struct Info:
element->key = malloc(keySize*sizeof(char));
Sur ma fonction freeArray, je reçois une erreur « double libre ou la corruption » à droite sur la 2ème itération de la boucle. Voici le code:
void freeArray(ListStruct *a)
{
int temp;
for(temp=0; temp<a->used; temp++)
{
free(a->array[temp].key);
a->array[temp].key=NULL;
//reset some ints
}
free(a->array);
a->array = NULL;
a->used = a->size = 0;
}
Ceci est probablement une erreur stupide, mais qu'est-ce que je fais mal?
EDIT: bogue trouvé. Vérifier les commentaires pour la solution
[Ne pas diffuser le résultat de 'malloc'] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) –
' a-> array = malloc (initialSize * sizeof * a-> array; ' – wildplasser
Ok, je ne lance plus, je reçois toujours l'erreur – BlueMoon93