假设我有~MyClass()
public:
MyClass();
~MyClass();
private:
map<int,string> m_colNameMap;
MyClass::~MyClass()
{
}
我知道m_colNameMap
将是自动的空闲内存,但是我想知道在销毁析构函数之后,所有内存是否都已释放到OS?还是发布过程在}
之后起作用?
如果我这样放置一个内存检查点:
_CrtMemState crtMemState;
_CrtMemState s1;
_CrtMemState s2
MyClass(){
_CrtMemCheckpoint(&s1);
}
MyClass::~MyClass()
{
_CrtMemCheckpoint(&s2);
if (_CrtMemDifference(&crtMemState, &s1, &s2)) {
_CrtMemDumpStatistics(&crtMemState);
_CrtDumpMemoryLeaks();
}
}
这是正确的方法吗?
答案 0 :(得分:0)
您要将“ the”析构函数与程序结尾相关联。但是,析构函数与对象的末尾关联。而且您的程序通常具有许多对象。有些是短暂的,有些是长期的。
这就是为什么您检查内存差异的想法通常毫无意义的原因。