Qwa*_*lly 4 c++ static memory-leaks unique-ptr
我unique_ptr用作静态数据成员来保存指针.
struct Test
{
int i;
~Test()
{
cout << "destructed" << endl;
}
};
struct S
{
static unique_ptr<Test> te;
};
unique_ptr<Test> S::te = unique_ptr<Test>(new Test());
Run Code Online (Sandbox Code Playgroud)
程序终止S::te被破坏,调用Test-destructor.
但_CrtDumpMemoryLeaks向我显示内存泄漏,其内存位置S::te.get()是指向(破坏的)Test对象的指针.
我不明白这种行为.
我不能用静电unique_ptr吗?尽管unique_ptr实现调用析构函数,为什么会出现泄漏?
如果您在静态破坏发生之前尝试检查泄漏,则会发生这种情况.
为了解决这个问题,你可以拨打_CrtSetDbgFlag用_CRTDBG_LEAK_CHECK_DF在您的应用程序的开始; _CrtDumpMemoryLeaks静态销毁后,它会在退出时自动调用.