为包含STL类的链表结构释放内存

时间:2014-01-23 08:34:06

标签: c++ linked-list dynamic-memory-allocation

我有一个由结构

定义的链表
struct node {
    std::string elem;
    std::vector<node *> children;
};

假设它已被正确动态分配,那么如何在之后释放堆? 我正在尝试这个:

void removeNodes(node* hElem) {
   for (node *hElemChildren: hElem->children)
       removeNodes(hElemChildren);
   delete hElem;
}

但我担心在这个过程中我会失去动态分配给std::stringstd::vector的内存。如果此处有内存泄漏,有人可以告诉我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

这里没有内存泄漏。当您调用delete时,将调用此元素的析构函数,该函数将调用std::string的析构函数,然后调用std::vector