zoukankan      html  css  js  c++  java
  • 转:"在已损坏了程序内部状态的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);

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

  • 相关阅读:
    1103: [POI2007]大都市meg
    bzoj2809: [Apio2012]dispatching
    bzoj3668: [Noi2014]起床困难综合症
    bzoj4025: 二分图
    bzoj4027: [HEOI2015]兔子与樱花
    bzoj3155: Preprefix sum
    http状态码status
    js改变触发
    eq
    error_reporting()
  • 原文地址:https://www.cnblogs.com/qrlozte/p/5696876.html
Copyright © 2011-2022 走看看