我有一个由结构
定义的链表struct node {
std::string elem;
std::vector<node *> children;
};
假设它已被正确动态分配,那么如何在之后释放堆? 我正在尝试这个:
void removeNodes(node* hElem) {
for (node *hElemChildren: hElem->children)
removeNodes(hElemChildren);
delete hElem;
}
但我担心在这个过程中我会失去动态分配给std::string
和std::vector
的内存。如果此处有内存泄漏,有人可以告诉我吗?谢谢!
答案 0 :(得分:1)
这里没有内存泄漏。当您调用delete时,将调用此元素的析构函数,该函数将调用std::string
的析构函数,然后调用std::vector
。