我正在使用 log4cplus 库。当我构建应用程序时,它可以正确编译和运行(嗯,不太正确,因为它没有记录任何内容,但这是另一个问题),但是当我关闭它时,我收到了这个错误:
Run-Time Check Failure #2 - Stack around the variable 's1' was corrupted.
这是我的代码。我用评论标记了相关的地方。
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow) {
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
////////////////// SET UP CHECKS FOR MEMORY LEAKS ////////////////////
_CrtMemState s1;
_CrtMemCheckpoint(&s1);
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
//////////////////////////////////////////////////////////////////////
log4cplus::PropertyConfigurator config(_T("log.properties")); // <-- this line seems to be responsible for the issue. When I remove it, everything is ok.
_CrtMemDumpAllObjectsSince(&s1); // <-- here program breaks with mentioned error.
return 1;
}
因此,正如评论中所写,PropertyConfigurator()
构造函数似乎对问题负责。这个地方没有任何其他代码会导致同样的问题。
我想知道如果这个库被很多人使用并且它可以工作,而我遇到堆栈损坏的问题,会出现什么问题。
有没有人知道这里发生了什么?
编辑:
我删除了所有不必要的代码(上面的代码已经过编辑),只留下了相关的。log4cplus::PropertyConfigurator config(_T("log.properties"));
似乎仍然会导致问题。