转:"在已损坏了程序内部状态的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);

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

时间: 2024-11-19 04:24:05

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

玩转 React(五)- 组件的内部状态和生命周期

文章标题总算是可以正常一点了-- 通过之前的文章我们已经知道:在 React 体系中所谓的 "在 JavaScript 中编写 HTML 代码" 指的是 React 扩展了 JavaScript 的语法,也就是 JSX.JSX 语法中可以以类似 HTML 语法的方式使用 React 组件,从而编写 React 组件就有一种创造一个新的 HTML 标签的体验. 上一篇文章<玩转 React(四)- 创造一个新的 HTML 标签>介绍了如何来创建一个 React 组件,以及组件

WPF程序将DLL嵌入到EXE的两种方法

WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了>可以参看地下地址(两篇是一样的): 开源中国 http://my.oschina.net/chinesedragon/blog/308336 CNBLOGS http://www.cnblogs.com/luoshupeng/p/3946635.html 引言 前几一写了一个小工具----<Vi

关于Chrome浏览器出现“此扩展程序可能已损坏”

安装个插件恶心了我大半天,一直出现"此扩展程序可能已损坏", 搜索了一些解决办法,比如改为"引导模式,把"_metadata"文件夹改名为"metadata"这些方法都没有用(某些插件支持此方法),升级最新版也无济于事, 后来使用最简单粗暴的方法解决了,我发现我下载的插件都是离线版本的,尝试了一下FQ进入谷歌商店下载插件,问题解决. 顺便解决了每次浏览器启动时都提示:请停用以开发者模式运行的烦人提示.

解决Windows 组件存储已损坏,0x80073712错误

在 Windows 8 与 Windows Server 2012,当系统组件有损毁时,我们可以在不影响目前系统状况下来检查与修复系统组件.如下,当我添加功能组件时报如下错误,明显可以看出我的组件存储已损坏. 那今天就让我告诉大家解决方案,我们可以使用DSIM命令来解决如上问题.一条命令就可以搞定,通过这条命令是把那些不同的系统文件还原成官方系统源文件,其他的第三方软件和用户设置完全保留,比重装那是好多了,但比较耗时噢.而且在扫描与修复的时候系统未损坏部分正常运行,电脑可以照常工作,没有宕机时间

Android应用程序内部启动Activity过程(startActivity)的源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6703247 上文介绍了Android应用程序的启动过程,即应用程序默认Activity的启动过程,一般来说,这种默认 Activity是在新的进程和任务中启动的:本文将继续分析在应用程序内部启动非默认Activity的过程的源代码,这种非默认Activity一般 是在原来的进程和任务中启动的. 这里,我们像上一篇文章Android应用程序启动过

VerifyError: Error #1107: ABC 数据已损坏,尝试的读取操作超出范围

VerifyError: Error #1107: ABC 数据已损坏,尝试的读取操作超出范围 项目中,出现报错: VerifyError: Error #1107: ABC 数据已损坏,尝试的读取操作超出范围?问题出现在执行TweenMax 操作出现的,项目中有很多模块在运行期载入swf功能模块,每个swf都是相对独立的程序,载入主程序中做为功能模块,这样主程序中很多功能可以由很多个swf组成,由不同的人员去开发,这是模块开发的一点好处.模块也有很多问题的,上面的报错大都是由于这类开发模式所带

【解决】该任务映像已损坏或已篡改。(异常来自HRESULT:0x80041321)

把系统升级到Windows 10,体验了一番Windows 10.感觉不怎么好用退回到了Windows 7,发现我原来自定义的任务计划没有按时执行,于是打开任务计划,弹出了下面的对话框[该任务映像已损坏或已篡改.(异常来自HRESULT:0x80041321)]. 解决办法: 1. 以管理员身份运行命令提示符并执行命令chcp 437schtasks /query /v | find /i "ERROR: Task cannot be loaded:" 2. 该命令将返回损坏的任务计划

C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

原文:C#尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 今天打开一个之前写的程序,查询数据库资料,结果单击查询时出错,提示显示和ntdl.dll有关. 用VS2012调试时发现在调用数据集时提示"尝试读取或写入受保护的内存.这通常指示其他内存已损坏." 打开数据集选择预览数据时VS出错退出. 系统是Win7的,昨天更新过:切换到2003系统下则一切正常 经百度,找到解决办法: 用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运

C# 尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。

在C#中调用别人的DLL的时候有时候出现 尝试读取或写入受保护的内存 .这通常指示其他内存已损坏. 在传值的时候还是用指针,再在C#中做转换就好了. 解决办法: [DllImport("APPLISTCC.dll")]public static extern string TestFunc1(string param1);string ret1 = TestFunc1("text"); 改成: [DllImport("APPLISTCC.dll"