C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用库中的代码时,变量周围的堆栈已损坏大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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”));似乎导致了这个问题.

解决方法

@H_874_27@ 此错误运行时检查失败#2通常是由内存中的某个错误引起的.看了你提供的样本后你应该改变这个:

log4cplus :: PropertyConfigurator config(_T(“log.properties”));

对此

log4cplus::PropertyConfigurator configure(_T("log.properties"));

如果这没有帮助,那么开始查看内存的初始化.

大佬总结

以上是大佬教程为你收集整理的c – 使用库中的代码时,变量周围的堆栈已损坏全部内容,希望文章能够帮你解决c – 使用库中的代码时,变量周围的堆栈已损坏所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。