为什么我不能删除生成的树
why I cannot delete the generated trees?
我正在c++中实现用于数据聚合的星形立方体算法(我是c++的新手)。在这个算法中,我们有大数据。在第一步中,我们使用所有数据构建一个基树,然后基于基树,我们应该构建其他树,命名为星树,在每个星树完成后,输出其值,并销毁星树。我做了所有的过程,我的算法有效,但它的内存使用量很大,而且这些星树似乎没有被破坏。以下是我认为对这个问题有用的部分代码:
对于我打算销毁的每棵树,我将其根传递给destroyTree(node*root)方法:
void Cagg::destroyTree(node* root){
int size = root->child.size();
for (int i = 0; i < size; i++){
destroyTree(root->child[i]);
}
delete root;
root = NULL;
}
调试时,节点似乎被删除了,但程序的内存使用率呈指数级增长,同时程序正在创建更多的星形树,这意味着它们没有被破坏。此外,析构函数是空的。我只是删除这个方法中的节点。提前感谢你对我的帮助。
此外,我从另一个类继承了节点结构。这可能是问题所在吗?并且两个类析构函数都为空。
这里没有任何会泄露内存的内容,但您不需要显式递归。你只需要这个:
node::~node()
{
while (size() > 0) {
delete child[size()-1];
}
}
以及某个地方的CCD_ 1。
相关文章:
- C++自定义删除运算符不能正常工作?
- 为什么我们甚至需要删除运算符?(我们不能只使用删除[]吗)
- 为什么我不能使用已删除或私有析构函数分配类的数组?
- 不能分配 X 类型的对象,因为它的复制运算符隐式删除
- 为什么具有 list<struct type>::itrator 的 struct 不能通过 clear() 删除?
- 删除类复制构造函数时,不能使用使用等号表示法的类构造函数
- 为什么unique_ptr不能阻止自定义删除程序的切片?
- "Framework::Graphics::Material"的默认构造函数不能被引用 - 它是一个已删除的函数
- 为什么不能删除正确的节点?
- C++ 为什么我不能在已删除的默认构造函数的对象上使用交换
- 不能只删除方法的常量重载?
- 为什么我不能删除我的节点和参考
- QT删除可与Valgrind一起使用,但不能正常执行
- 在将对象移动到另一个线程后,不能简单地删除该对象
- 为什么我不能删除生成的树
- 为什么链表中的节点不能负责删除自己?(C++)
- 为什么我不能从 std::set 中使用 std::remove_if 中删除字符串?
- 如果我删除 const,为什么这个带有 boost::shared_ptr 的调用不能在 c++ 中编译
- 错误:表达式不能用作函数.如何删除它
- 我不能删除双向链表中的最小数字,然后删除下一个