1

文字を三分探索木に挿入しようとしています。このセグメンテーション違反について教えてください?? これを実行すると、セグメンテーション違反が発生します(コアダンプ)なぜこれがそうなのか教えてください??

int main(int argc ,char* agrv[])
{
TSTNode *root;
char *str;
cin >> str;
InsertTST(root,str);
DisplayTST(root);
return 0; 
}

TSTNode* InsertTST(TSTNode *root, char *str)
{
if(root== NULL){
    TSTNode *root = (TSTNode *)malloc(sizeof(TSTNode *));
    root->left = NULL;
    root->right = NULL;
    root->eq = NULL;
    root->is_end_of_str = 0;

    return root;
}


if(root->data < *str)
    InsertTST(root->right, str);
else if (root->data == *str){
    if(*(str+1) != '\0')
    InsertTST(root->eq, str+1);
    else 
    root->is_end_of_str = 1;
}
else 
    InsertTST(root->left, str);

return root;
}
4

1 に答える 1

2
char *str;
cin >> str;

メモリの割り当てなし、その後のメモリへの書き込み = seg fault。

于 2012-12-16T14:55:57.250 に答える