c++ destroy_tree指针错误
C++ destroy_tree pointer error
我有一个在c++中删除树的destroy_tree函数的问题。编译器说*** glibc detected *** <path>: free(): invalid pointer: 0x00007f37590d3778 ***
。下面是我的destroy_tree
函数:
void Tree::destroy_tree(node** parent) {
if ( (*parent) != NULL ) {
for (int i=0; i<NUM_ELEMS; i++) {
destroy_tree( &((*parent)->leaves[i]) );
}
if ( (*parent)->zone_id != NULL ) {
delete (*parent)->zone_id;
(*parent)->zone_id = NULL;
}
delete (*parent);
(*parent) = NULL;
}
结构如下:
struct node {
int* zone_id;
node* leaves [NUM_ELEMS];
node() : leaves() {} //setting all leaves pointers to NULL
};
指针初始化(在其他函数中):
(*parent)->leaves[value]->zone_id = new int;
*((*parent)->leaves[value]->zone_id) = zone_id;
试一试。我认为这个"if"应该包括所有代码,而不仅仅是递归destroy_tree
void Tree::destroy_tree(node** parent)
{
if ( (*parent) != NULL ) //I think this "if" should be include all code Not only recursion destroy_tree
{
for (int i=0; i<NUM_ELEMS; i++)
{enter code here
destroy_tree( &((*parent)->leaves[i]));
}
if ( (*parent)->zone_id != NULL ) //the (*parent) should not be NULL
{
delete (*parent)->zone_id;
(*parent)->zone_id = NULL;
}
delete (*parent); //the (*parent) should not be NULL
(*parent) = NULL;
}
}
对不起,我的英语很差
相关文章:
- 为什么我在空指针错误(链表)中获取成员访问权限
- std::函数指针错误:无法将 &A::a 转换为类型 std::function<>&&
- 为什么我得到 munmap_chunk():无效的指针:错误
- 成员模板函数指针错误
- 删除指针时,未分配被释放的 C++ 指针错误
- Visual Studio 中的"指向引用的指针"错误不会按发生位置的文件名显示
- C++数组指针错误无法将“int*”转换为“int**”
- C++ 通过函数指针错误调用成员函数
- 从 BST 中删除元素(指针错误)
- 随机生成的多维布尔指针错误
- 在测试中使用unique_ptr时指针错误无效
- 使用 malloc 而不是 new 会导致 free():指针错误无效
- 非标准语法;使用 '&' 创建指向成员的指针错误,将成员函数分配给向量时出错
- 抽象类和唯一指针 c++ 错误
- 返回函数指针错误而不带类型定义
- 练习中出现空指针错误
- 指针错误导致的分段错误(简单..)
- free():C++中的指针错误无效
- 使用布尔值数组"表达式必须具有指向对象类型的指针"错误C++
- 指针错误的C 数组