私は現在、スペルチェッカー(CS50s pset5、それを知っている人向け)に取り組んでいます。私はトライを使って検索していますが、今は問題を取り除いています。この関数はfree()を初めて試みるときに失敗します。私の推測では、ポインタが何を指しているのではなく、ポインタを解放しようとしていますが、私は完全に間違っている可能性があります。TRIEを解放するには?
私の具体的な質問は、free()
の機能がここで失敗するのはなぜですか? (エラー:ダブル無料または破損(アウト):0x00000000006020c0 ***)
ノードのマイdefiniton:
typedef struct node
{
bool wordHere;
struct node* children[27];
}node;
マイアンロード機能:
node* currentNodePtr = &root;
bool unload(void)
{
node* ptrArray[27] = {NULL};
for(int i = 0; i < 27; i++)
{
ptrArray[i] = currentNodePtr -> children[i];
}
free(currentNodePtr);
for(int c = 0; c < 27; c++)
{
if(ptrArray[c] != NULL)
{
currentNodePtr = ptrArray[c];
}
unload();
}
return 0;
}
はそれを作るためにはるかに良いでしょう ''アンロードのパラメータをcurrentNodePtr' 'グローバル変数の代わりに。 – interjay
残念なことに私はこのことを許可されていない私の任務に服していますが、それはずっと良くなっています。ありがとう! –