求助C中结构体的初始化问题

子木良家 2015-10-30 10:01:58
typedef struct TreeNode *SearchTree;
typedef struct TreeNode *Position;
struct TreeNode{
ElementType Element;
SearchTree Left;
SearchTree Right;
};
SearchTree MakeEmpty(SearchTree T){
if(T != NULL){
MakeEmpty(T->Left);
MakeEmpty(T->Right);
free(T);
}
return NULL;
}

main(){
SearchTree stree;
stree = MakeEmpty(stree);
}


为何是报Segmentation fault (core dumped)错误,但是将main中的 stree = MakeEmpty(stree);换成NULL后就正确?
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
toofunny 2015-10-31
  • 打赏
  • 举报
回复
这段代码问题大了。 SearchTree stree; 定义了一个野指针(未指向任何有效内存) if(T != NULL){ MakeEmpty(T->Left); 访问野指针的左子树,后果未知。 MakeEmpty(T->Right);访问野指针的右子树,后果未知。 free(T); } 最起码要分配一个节点给它吧。 SearchTree stree = malloc ................................
dustpg 2015-10-30
  • 打赏
  • 举报
回复
用C语言的都不喜欢初始化吗

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧