在程序结束时释放内存有问题。这是来自学校的练习,使用 ADT 实现二叉树和使用数据类型 char 的具体实现。
释放代码:
void free_tree(TreeNode *root){
TreeNode *cur;
if (!root) return;
else{
cur = root;
free_tree(cur->left);
free_tree(cur->right);
free(cur->key); //throws an error!
free(cur);
} }
这是我为密钥本身 malloc 的地方(问题可能在这里):
puts("Please enter a value for key of new node");
_flushall();
scanf("%s",&buffer);
user_input = (char *) malloc(sizeof(char)*(strlen(buffer)+1));
strcpy(user_input,buffer);
user_input[strlen(buffer)+1] = '\0';
p_node = create_tree_node(user_input); //this function append the new data to a new node, returns *TreeNode
insert_node_by_value(&root,p_node,str_comp);
break;
这是我得到的错误:
顺便说一句,释放节点本身工作正常!
感谢您的帮助以及有关代码功能的任何提示和评论。
可以在这里找到functions.c的完整代码粘贴:http: //pastebin.com/TqaNK5v8 - 函数