0
このポインターを自分の関数で使用した後で解放することはできません。 このエラーメッセージが表示されます。この関数は、単語の綴りが正しいかどうかを調べるために辞書をチェックする必要があります。ルートは最初のトライノードです。free()を使用してmallocedポインターを解放すると、無効なポインターが無効になる
`./speller '内のエラー:無料():無効なポインタ:0x00007fe53a80d848
はここで機能だ:
bool check(const char *word)
{
int pos=0;
int path;
char wordChar=*(word+pos);
wordTriePtr cursor=(wordTriePtr) malloc(sizeof(wordTrie));
cursor=root;
while(wordChar!='\0')
{
path=determinePath(wordChar);
if(cursor->children[path]==NULL)
{
free(cursor);
return false;
}
else
cursor = cursor->children[path];
wordChar=*(word+(++pos));
}
if(cursor->isThisWord==true)
{
free(cursor);
return true;
}
else
{
free(cursor);
return false;
}
}
私が間違って何をしているのですか?
wordTriePtr cursor=(wordTriePtr) malloc(sizeof(wordTrie));
cursor=root;
最初は変数cursor
を定義し、割り当てるいくつかのメモリを指すように初期化:
この問題のうちC++に関連する部分はありますか?そうでない場合は、C++タグを削除する必要があります。 –
彼はmallocの結果をキャストしていますが、C++でなければなりません。 –
@TomTanner Cをプログラミングするときにも初心者が多くいます。 –