我是想实现创建二叉树的,用前序式。但是我在子函数createtree中调用malloc分配内存,创建成功后回到主函数,分配的内存空间没有了。我在单步调试时创建时可以看见head的地址的,但函数返回main函数时地址就变回void*的了,不是malloc子函数分配的内存在进程结束前不会自动free的吗?
#include<stdio.h>
#include<stdlib.h>
typedef struct _tree
{
char data;
struct _tree *lchild;
struct _tree *rchild;
}bittree;
int createtree(bittree *head)
{
char data;
fscanf(stdin,"%c",&data);
getchar();
if('#' != data)
{
head = (bittree*)malloc(sizeof(bittree));
if(head == NULL) exit(0);
head->data = data;
head->lchild = NULL;
head->rchild = NULL;
createtree(head->lchild);
createtree(head->rchild);
}
return 1;
}
int main()
{
bittree *head = NULL;
createtree(head);
printf("root lchild data = %c\n",head->lchild->data);
return 1;
}
慕后森
手掌心