Является ли деструктор конечной точкой программы?

Предположение, у меня есть ~MyClass()

public:
    MyClass();
    ~MyClass();
private:
    map<int,string> m_colNameMap;

MyClass::~MyClass()
{
}

Поскольку я знаю, что m_colNameMap будет автоматически освобождать память, но мне интересно, чтобы после выхода из деструктора вся память была освобождена для ОС? или процесс выпуска действует за } ?

Если я поставлю контрольную точку мем, как это:

_CrtMemState crtMemState;
_CrtMemState s1;
_CrtMemState s2
MyClass(){
 _CrtMemCheckpoint(&s1);

}
MyClass::~MyClass()
{
  _CrtMemCheckpoint(&s2);

    if (_CrtMemDifference(&crtMemState, &s1, &s2)) {
    _CrtMemDumpStatistics(&crtMemState);
    _CrtDumpMemoryLeaks();
   }
}

Это правильный путь?

Всего 1 ответ


Вы связываете деструктор с концом программы. Однако деструктор связан с концом объекта. И ваша программа обычно имеет много объектов. Некоторые недолговечны, некоторые долговечны.

Поэтому ваша идея проверки различий в памяти вообще не имеет смысла.


Есть идеи?

10000