C ++内存因静态变量泄漏

Dee*_*ing 0 c++ static memory-leaks visual-studio-2012

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;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 5

您正在静态变量的作用域完成之前调用该函数。因此,期望变量已被破坏是错误的。

您需要等到作用域结束后才能调用该函数。当然这很难做到,但是运行时可以为您提供帮助,如文档中所述:

通过使用_CrtSetDbgFlag函数打开_crtDbgFlag标志的_CRTDBG_LEAK_CHECK_DF位字段,可以在程序终止时自动调用该函数。