解决stack overflow栈溢出问题!
今天又遇到"stack overflow"的问题,让我和一个同事头痛了好半天。
问题描述:VC++写的COM模块(ATL),用Delphi做客户端调用,运行时报"stack overflow"的错误,调试发现此错误是在执行COM中一个函数入栈的时候发生的。
栈溢出!乍一眼还觉得挺吓人的,没什么经验,是头一次遇到这样的问题。堆栈的知识我不是很懂,只知道要执行的东西先要压入栈中,既然报了溢出,就说明东西太大了,容器装不下了。那到底是什么东西太大了呢?看来看去突然发现,这个出问题的函数一共写了有1000多行,天啦!
把函数体拆分开!当时首先是这样想的,但马上发现,不好拆,因为整个函数体里就是一个大大大大大的switch...case...分支流程,要是把每个case下的内容拆出来单独写成函数再调用,这个工作量太大。还是先想想其它出路……
东西大了,从另一面来讲不就是容器(栈)小了吗?不把这个东西变小,如果能把容器变大也应该能解决吧!要把栈变大,于是打开菜单Project(项目)->XXX Property(属性),在Linker(链接器)->System(系统)里找到Stack Reserve Size(堆栈保留大小)和Stack Commit Size(堆栈提交大小)两个选项,马上把这两个值设置成足够大,测试——结果依然报错。-_- !
继续思考,发现在调试时,错误消息是直接弹出来的,而VS的调试环境并没有事先捕获到。因为是用Delphi的程序在调用COM,那这样看来,应该到Delphi中去找找原因。同样,找到Project->Options->Linker->Max stack size,把这个值改大一些。果然!运行成功没有报错了!再回到VS把刚才改过的两处设置改回原默认值,仍然没有报错,看来瓶颈问题出在Delphi上。
以上小小心得,探究问题与解决问题的思路,自己做个笔记,也求与大家分享!
解决stack overflow栈溢出问题!相关推荐
- 深入全面探究有未经处理的异常: 0xC00000FD: Stack overflow(栈溢出)问题!
深入全面探究有未经处理的异常: 0xC00000FD: Stack overflow(栈溢出)问题! 参考文章: (1)深入全面探究有未经处理的异常: 0xC00000FD: Stack overfl ...
- 笔记:Stack overflow栈溢出
在函数递归中,当实现一个最简单的函数递归,如下: int main(){printf("hello");main(); return 0; } 在上述代码块中,main函数中打印完 ...
- Stack overflow (CVF, IVF)
解决Stack overflow错误: compag visual fortran : project settings|link|output|stack allocations 下有 reserv ...
- Stack OverFlow 正确的使用姿势(快速访问、优雅搜索)
Stack Overflow是一个与程序相关的IT技术问答网站,据说99.9999%的问题都能在这里找到答案,所以想在程序员的路上越走越快,尽早开上跑车,这个利器是必须要掌握的. Stack Over ...
- Error:stack overflow分析
函数的栈空间是用于存放局部变量.函数返回地址以及函数参数等数据的内存区域,其大小是有限制的(VC6默认1M). 局部变量占用空间太大或者函数的调用层次太深就会出现"stackoverflow ...
- Visual Stdio VS 错误 error : 0xC00000FD: Stack overflow. 更改堆栈空间解决栈溢出问题
Visual Stdio VS 错误 error : 0xC00000FD: Stack overflow. 更改堆栈空间解决栈溢出问题 参考文章: (1)Visual Stdio VS 错误 err ...
- 解决:Unhandled exception in XX.exe: 0xc00000FD; Stack Overflow
今天遇见这个问题,就简单记一下.参考了不少文档.博客,终于解决了问题.其实说起来问题也比较简单,就是在运行时在出错的地方卡住,并没有提示任何错误.在Debug时错误信息为:Unhandled exce ...
- 如何解决C/C++中stack overflow问题
一般遇到这个问题,有两个常见的情况,一个是存在函数的递归调用,另一个是函数中定义了一个较大的数组或者别的变量. 1.在函数的递归调用中,函数中定义的局部变量所占的空间要直到递归结束才能被释放,这样函 ...
- Vs定义超大数组时,stack OverFlow的解决方法
定义超大数组时,stack OverFlow的解决方法,当然了这里的数组不仅仅是int,char,double等内置类型,还可以是其他的类,如CString,CButton,CMap等. stack ...
最新文章
- 《iOS9开发快速入门》——导读
- R构建对数回归模型(Logarithmic Regression)
- linux 网络监控指标,Linux监控一些指标
- 批处理之显示隐藏文件
- 【渝粤教育】广东开放大学 社会调查与方法 形成性考核 (35)
- java 如何判定消息已在队列_【05期】消息队列中,如何保证消息的顺序性?
- 消费金融盈利分析及风控能力建设
- 推荐系统实战第一部分 协同过滤
- UITapGestureRecognizer 的用法
- Python自动化(十二):一分钟搞定几百个Excel中查找的数据
- 电脑重装系统记事本打不开提示无法启动此应用程序怎么办
- arctan查表法_DSP正弦波——查表法原理
- C语言画图形(图形库graphics的使用)
- 【微信小程序】表单验证WxValidate.js使用
- DevTools 无法加载源映射:无法加载chrome-extension://ncennffkjdiamlpmcbajkmaiiiddgioo/js/xl-content.js.map 的内容
- 江西伟人系列第三篇:唐宋八大家(欧阳修)
- PHP网页代理cc攻击无需对接版源码
- 用python爬小说_使用python+Scrapy爬小说
- proxychins+ssh使用socks5代理
- DL4J中文文档/开始/Eclipse DL4J示例之旅
热门文章
- 关于戴尔电脑物理内存(灵越7590)
- 博客网页代码块渲染-显示行号,一键复制,全屏显示,mac风格(基于mavon-editor或wangEditor)
- VsCode使用笔记【1】Ubuntu+vscode+Monokai+修改主题中的字体颜色
- php+flash头像上传组件
- java.beans.transient_JavaBeans程序开发
- Windows 之 win SMB(smb) 功能的开启设置和使用的简单说明
- zabbix离线驱动盘安装
- 【微信小程序】开发入门篇(一)
- Python扫码登录保存和验证cookies值——网易云音乐篇(九)
- word与spoolsv.exe占CPU过高