我正在为一个类写一棵二进制搜索树,我可能做错了什么,但我的技术无法确定是什么。
下面是节点结构。
typedef struct Node {
int value;
struct Node *left;
struct Node *right;
} Node, *NodePtr;
这是我的创建节点函数
NodePtr nodeCreate(int value) {
NodePtr node_new = 0;
node_new = (NodePtr) malloc(sizeof node_new);
node_new->value = value;
node_new->left = 0;
node_new->right = 0;
return node_new;
}
还有我的destroy整个树的函数
void treeDestroy(NodePtr root) {
if (!root) { return; }
treeDestroy(root->left);
treeDestroy(root->right);
free(root); // HERE IS WHERE MY BREAKPOINT TRIGGERS
root = 0;
}
最后是我的主程序的样子
int main(int argc, char *argv[]) {
NodePtr tree_root = 0;
tree_root = nodeCreate(2);
tree_root->left = nodeCreate(1);
tree_root->right = nodeCreate(3);
treePrint(tree_root);
treeDestroy(tree_root);
return 0;
}
有谁能帮我找到哪里出了问题?
node_new = (NodePtr) malloc(sizeof node_new);
应该是
node_new = malloc(sizeof *node_new);
sizeof node_new
是大小 pointer
何况 sizeof *node_new
是指针指向的对象的大小。