c – 使用库中的代码时,变量周围的堆栈已损坏
发布时间:2020-12-16 07:05:54 所属栏目:百科 来源:网络整理
导读:我正在使用log4cplus库.当我构建应用程序时,它编译并正常运行(好吧,不太正确,因为它没有记录任何东西,但这是另一个问题),但当我关闭它时,我收到此错误: Run-Time Check Failure #2 - Stack around the variable 's1' was corrupted. 这是我的代码.我用评论
我正在使用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”));似乎导致了这个问题. 解决方法
此错误运行时检查失败#2通常是由内存中的某个错误引起的.看了你提供的样本后你应该改变这个:
log4cplus :: PropertyConfigurator config(_T(“log.properties”)); 对此: log4cplus::PropertyConfigurator configure(_T("log.properties")); 如果这没有帮助,那么开始查看内存的初始化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |