我從valgrind獲得以下錯誤。條件跳轉或移動取決於未經初始化的值。我環顧了類似的問題,但我無法找出什麼是錯的。我已初始化所有變量,但仍然..有條件跳轉或移動取決於unininitalized值
unsigned long hash_word(const char *str)
{
unsigned long hash = 5381;
int c = 0;
while((c = *str)) // The error occurs here
{
hash = ((hash<<5) + hash) + c;
str++;
}
return hash%1999099;
}
str的值從主函數傳遞。我正在使用leak-check = full和track-origins = yes。先謝謝您的幫助。
首先我正在初始化一個節點。
typedef struct node{
char word[46];
struct node *next;
} node;
調用代碼
while(!(feof(fp)))
{
node *n = malloc(sizeof(node));
if (n == NULL)
{
return false;
}
else
{
fscanf(fp,"%s",n->word);
index = hash_word(n->word);
.
.
. // further code
}
你如何獲得'str'?向我們顯示來電顯示代碼。 – cnicutar 2012-01-28 17:38:46