Nad*_*ern 1 c++ memory-leaks set
我有一个包含指向已分配内存的指针的集合,我使用clear方法示例:setname.clear();
并且该集合本身正在被清除并且他的指针但我仍然因为某些原因而分配的内存保持未清除而导致内存泄漏.
小智 8
std :: set的clear()方法确实从集合中删除了元素.但是,在您的情况下,set包含要删除的指针,但它们指向的内存不会被释放.您必须在调用之前手动执行此操作clear(),例如:
struct Deleter
{
template <typename T>
void operator () (T *ptr)
{
delete ptr;
}
};
for_each (myset.begin (), myset.end (), Deleter());
Run Code Online (Sandbox Code Playgroud)
Boost中有一个名为Pointer Container的库可以解决这个问题.