码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-07-22 21:20:54      阅读:1440      评论:0      收藏:0      [点我收藏+]

标签:

我的问题跟原作者的问题差不多。头文件和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);

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

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

标签:

原文地址:http://www.cnblogs.com/qrlozte/p/5696876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!