我想實現C中的線索我的代碼編譯正確,但是當我運行它的valgrind它顯示了一個錯誤。這裏是問題的一部分:如何設置所有的孩子爲NULL線索
typedef struct node {
bool end;
struct node *chil[26];
} NODE;
int main()
{
NODE* ne = (NODE*)malloc(sizeof(NODE));
if(ne->chil[1] == NULL) printf("\nzwycięstwo!\n");
free(ne);
return 0;
}
,這裏是錯誤報告:
== == 3346條件跳轉或移動依賴於未初始化的值(一個或多個)
== 3346 = =上0x40076B:主(exp.c:21)
== 3346 ==未初始化值是由一個堆分配
== 3346 ==一個創建噸0x4C2AB80:malloc的(在/usr/lib/valgrind/vgpreload_memcheck-amd64->linux.so)
== 3346 ==由0x40075A:主(exp.c:20)`
我想我必須明確地說,
ne->chill = {NULL};
但這會導致編譯器錯誤 「預期的表達」
我該怎麼辦?我可以避免通過整個數組將指針設置爲NULL嗎?
首先你應該檢查'ne'本身。其次,你不應該讀未初始化的對象。 「我可以避免通過整個數組來設置指針爲NULL嗎?」 - 不要使用它們的值。但僅僅遵循C約定會更容易。 – Olaf