Valgrind在以下代碼中報告了錯誤Invalid read of size 8
。大小8的讀取無效 - Valgrind + C
我有一個數組聲明如下,
struct symbol *st[PARSER_HASH_SIZE];
當我的程序進行初始化,該陣列中的所有元素都initailzied爲0
memset(&st[0], 0, sizeof(st));
我的程序創建的struct symbol
和插入實例根據散列值將數據導入上述數組中。因此,此數組中的幾個元素將爲NULL,其他元素將爲有效值。
下面的代碼嘗試刪除分配的項目和Valgrind的抱怨在該行, 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);
}
}
我想了解這個錯誤的原因。
任何幫助將是偉大的!
這意味着包含指向結構。你能告訴我如何正確初始化它嗎? – 2010-10-27 17:18:31