这是一个关于AVL树的问题,我对current复制后,并没有改动其内容,怎么会free报错呢?求教!
以下是删除AVL节点的函数,在图中画红线的地方报了错。
这是一个关于AVL树的问题,我对current复制后,并没有改动其内容,怎么会free报错呢?求教!
以下是删除AVL节点的函数,在图中画红线的地方报了错。
展开全部
收起
free前需要判断是否为NULL,代码修改如下:
//原始代码
if(parent->left == current){
parent->left = NULL;
free(current);//这里需要判断current是不是NULL
}
//上述代码修改为:
if(parent->left == current){
if(current) free(current);
parent->left = NULL;
}
你看一下你创建节点的时候,申请的空间是多大,这个错误一般都是操作malloc或者new申请的内存溢出。 用malloc或new申请了一个特定大小的内存,但是后期对这块内存进行复制,可能超过了该内存大小的范围,再进行free或者delete的时候,就会报错。如
报告相同问题?