Ich versuche, einen Trie in C zu implementieren. Mein Code kompiliert korrekt, aber wenn ich es mit Valgrind ausführen zeigt es einen Fehler. hier ist der problematischste Teil:Wie setze ich alle Kinder auf Null im 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;
}
und hier wird der Fehlerbericht:
== == 3346 Bedingter Sprung oder bewegen sich auf nicht initialisierten Wert hängt (n)
== 3346 = = at 0x40076B: main (exp.c: 21)
== == 3346 Uninitialised-Wert wurde durch eine Heapzuordnung erstellt
== == 3346 a t 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64->linux.so)
== == 3346 von 0x40075A: main (exp.c: 20) `
I ausdrücklich denke, ich muss sagen, dass
ne->chill = {NULL};
aber dies führt zu Compiler-Fehler „expected Ausdruck“
Was soll ich tun? Kann ich vermeiden, das gesamte Array durchzugehen, um Zeiger auf NULL zu setzen?
Zuerst sollten Sie 'ne' selbst überprüfen. Zweitens sollten Sie nicht initialisierte Objekte nicht lesen. "Kann ich vermeiden, das gesamte Array zu durchlaufen, um Zeiger auf NULL zu setzen?" - Verwenden Sie ihre Werte nicht. Aber es wäre einfacher, C-Konventionen zu folgen. – Olaf