Утечки памяти в C ++ из-за статической переменной [duplicate]

0

Visual Studio 2012 говорит мне, что следующая программа имеет утечки памяти. Правильно ли это и если да, то как я могу избежать утечек памяти при использовании (например) статических векторов?

#include <crtdbg.h>
#include <vector>

struct A {
  static std::vector<int> a;
};
std::vector<int> A::a;

int main()
{
  _CrtDumpMemoryLeaks();
    return 0;
}
Теги:
memory-leaks
static
visual-studio-2012

1 ответ

4
Лучший ответ

Вы вызываете функцию до завершения статической переменной. И поэтому вам не следует ожидать, что переменная была уничтожена.

Вам нужно подождать, пока область действия не закончится, прежде чем вы вызовете эту функцию. Конечно, это трудно сделать, но время выполнения может помочь вам, как описано в документации:

Функция может быть вызвана автоматически при завершении программы, включив бит-бит _CRTDBG_LEAK_CHECK_DF-поля флага _crtDbgFlag с помощью функции _CrtSetDbgFlag.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню