Valgrind zgłasza błąd Invalid read of size 8
w poniższym kodzie.Błąd odczytu wielkości 8 - Valgrind + C
Mam tablicę zadeklarowane jak,
struct symbol *st[PARSER_HASH_SIZE];
Gdy mój program jest inicjowany, wszystkie elementy tej tablicy są initailzied jako 0.
memset(&st[0], 0, sizeof(st));
Mój program tworzy instancje struct symbol
i wkładek do powyższej tablicy w zależności od wartości skrótu. Tak mało elementów w tej tablicy będzie NULL, a inne będą poprawną wartością.
Poniższy kod próbuje usunąć przydzielonych przedmioty i valgrind narzeka na linii, 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);
}
}
Próbuję zrozumieć przyczynę tego błędu.
Każda pomoc będzie świetna!
To ma zawierać odnośniki do elemencie. Czy możesz mi powiedzieć, jak zainicjować go poprawnie? –