Valgrind signale l'erreur Invalid read of size 8
dans le code suivant.Lecture non valide de la taille 8 - Valgrind + C
J'ai un tableau déclaré comme,
struct symbol *st[PARSER_HASH_SIZE];
Quand mon programme est initialisé, tous les éléments de ce tableau sont initailzied comme 0.
memset(&st[0], 0, sizeof(st));
Mon programme crée des instances de struct symbol
et inserts dans le tableau ci-dessus en fonction de la valeur de hachage. Donc, peu d'éléments dans ce tableau seront NULL et d'autres auront une valeur valide.
Le code suivant tente de supprimer les éléments attribués et valgrind se plaint à la ligne, sym = st[i]; sym != NULL; sym = sym->next
struct symbol *sym = NULL;
/* cleaning the symbol table entries */
for(i = 0; i < PARSER_HASH_SIZE; i++) {
for(sym = st[i]; sym != NULL; sym = sym->next) { /* <-- Valgrind complains here */
free(sym);
}
}
Je suis en train de comprendre la raison de cette erreur.
Toute aide serait géniale!
Il est destiné à contenir des pointeurs vers structs. Pouvez-vous me dire comment l'initialiser correctement? –