Я пытаюсь реализовать trie в C. Мой код компилируется правильно, но когда я запускаю его с valgrind, он показывает ошибку. вот проблематичная часть:Как установить всех детей в NULL в trie
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: таНос (в /usr/lib/valgrind/vgpreload_memcheck-amd64->linux.so)
== 3346 == по 0x40075A: основная (exp.c: 20) `
Я думаю, я должен сказать, что явно
ne->chill = {NULL};
, но это приводит к ошибке компилятора «ожидаемое выражение»
Что я должен делать? Могу ли я пройти через весь массив, чтобы указать указатели на NULL?
Сначала вы должны проверить 'ne'. Во-вторых, вы не должны читать неинициализированные объекты. «Могу ли я пройти через весь массив, чтобы указать указатели на NULL?» - Не используйте их значения. Но было бы проще просто следовать правилам C. – Olaf