私は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;
}
とエラー報告されている:
== ==条件付きジャンプまたは移動が初期化されていない値(S)
== 3346に依存3346 =は、ここで問題と一部であります= 0x40076Bで:メイン(exp.c:21)
== 3346 ==未初期化値がヒープ割り当て
== 3346 == aで作成されましたT 0x4C2AB80:0x40075Aによってはmalloc(/usr/lib/valgrind/vgpreload_memcheck-amd64->linux.soで)
== 3346 ==:メイン(exp.c:20) `
I私は明示的に
ne->chill = {NULL};
ことを言っていると思いますが、これは「期待される表現」
私は何をすべきコンパイラエラー になり? NULLにポインタを設定するために配列全体を調べることを避けることはできますか?
まず、「ne」自体をチェックする必要があります。次に、初期化されていないオブジェクトは読み込まないでください。 "ポインタをNULLに設定するために配列全体を調べることはできますか?" - 値を使用しないでください。しかし、Cの慣習に従う方が簡単です。 – Olaf