【初心者歓迎】C/C++室 Ver.43【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0789デフォルトの名無しさん
2007/10/28(日) 14:05:04それで、各ノードにポインタ配列を用意して、各文字列別の遷移先を作りました。
しかし、そこの遷移先のチェックの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];
}
■ このスレッドは過去ログ倉庫に格納されています