Trieの練習で文字列の出現頻度を計算するプログラムを書きたいのです。
それで、各ノードにポインタ配列を用意して、各文字列別の遷移先を作りました。
しかし、そこの遷移先のチェックのif(prevNode->next[c]==NULL)で実行時にエラーが出てしまいます。
NULLかどうかのチェックも確認出来ないのでしょうか?ポインタ配列として宣言してるので、ポインタそのものの領域はあるはずなのですが…。
ソースはこんな感じです。

typedef struct NODE{
char c;
int *p_freqList;
NODE *next[MAX_CHAR];
}NODE;

typedef struct{
NODE *root;
int freqList[MAX_WORD];
}GLOBAL_DATA;

GLOBAL_DATA g_data;

void initFreq(){
memset(g_data.freqList, -1, sizeof(int)*MAX_WORD);
g_data.root=(NODE *)malloc(sizeof(NODE));
}

NODE *addNode(unsigned char c, NODE *prevNode){
if(prevNode->next[c]==NULL){ ←ここで問題発生
prevNode->next[c]=(NODE *)malloc(sizeof(NODE));
memset(g_data.root->next,NULL,sizeof(NODE*)*MAX_CHAR);
}
return prevNode->next[c];
}