感谢大家,在整个项目中再次检查后,真正的问题是缺少虚拟破坏者......导致内存泄漏......
#include "stdafx.h"
#include <vector>
class VecContainerParent
{
public:
VecContainerParent(){};
没有这一行:
virtual ~VecContainerParent(){};
它导致内存泄漏
};
class VecContainerChild : public VecContainerParent
{
public:
VecContainerChild(){};
//virtual ~VecContainerChild(){};
private:
std::vector<int> vec;
};
////////// WITH MEMORY LEAK ///////////////
int _tmain(int argc, _TCHAR* argv[])
{
VecContainerParent *a;
while(true)
{
a = new VecContainerChild();
delete a;
}
}
///// Original Post ///////// 我有一个内存泄漏问题,当在类内部使用vector时,然后使用这个对象与new & delete。类中的向量似乎没有释放内存。为了测试这一点,我在任务管理器中看到进程的内存急剧增加。
请看下面的例子:
class VecContainer
{
public:
VecContainer(){};
private:
std::vector<int> vec;
}
内存泄漏:
int main() { VecContainer *a; while(true) { a = new VecContainer(); delete a; } }
好(因为不使用ptr):
int main() { while(true) { VecContainer a; } }