Valgrind informa el error Invalid read of size 8
en el siguiente código.Lectura no válida del tamaño 8 - Valgrind + C
tengo una matriz declarada como,
struct symbol *st[PARSER_HASH_SIZE];
Cuando se inicializa mi programa, todos los elementos de esta matriz se initailzied como 0.
memset(&st[0], 0, sizeof(st));
Mi programa crea instancias de struct symbol
y los insertos en la matriz anterior dependiendo del valor hash. Muy pocos de los elementos de esta matriz serán NULL y otros tendrán un valor válido.
El siguiente código intenta eliminar los temas asignados y valgrind se queja en la línea, 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);
}
}
Estoy tratando de comprender la razón de este error.
¡Cualquier ayuda sería genial!
Está destinado a contener punteros a estructuras. ¿Puedes decirme cómo inicializarlo correctamente? –