• 注册
当前位置:1313e > 默认分类 >正文

转:在已损坏了程序内部状态的XXX.exe 中发生了缓冲区溢出的一种可能原因

我的问题跟原作者的问题差不多。头文件和DLL不匹配导致的。

原文链接:http://blog.csdn.net/u012494876/article/details/39030887

今天软件突然出现崩溃的bug:

在release模式下,总是崩溃在一个函数A的结束处,打印输出调试,发现如果注释该函数A中的某个函数B的调用,崩溃不会发生;除此之外,注释函数B中的任何代码都不起作用。

崩溃时弹出的对话框为:"在已损坏了程序内部状态的 BREW_Simulator.exe 中发生了缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。”;

刚开始以为是strcpy/sprintf等函数越界或线程不同步,但是对所有线程、相关函数排查后,无果。

最后发现,原来是函数A调用函数B所用的dll头文件与函数B所在库的实际头文件不匹配。

A所包含的头文件中,B函数声明如下:void FunB(bool b);

而函数B的实际声明为:void FunB(void);

所以调用时就总是会报告栈已破坏。

转载于:https://www.cnblogs.com/qrlozte/p/5696876.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录