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;
どこがダメなのかさっぱり見えない…