锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源心得 / STATUS_STACK_BUFFER_OVERRUN encountered
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究


STATUS_STACK_BUFFER_OVERRUN encountered


出错背景

最近完成一个小项目里的统计功能,合并同事写的代码时遇到这个问题,合并的新代码没问题,合并前的功能测试也没问题,遇到了这个问题后,就觉得有点头疼。把合并代码排除后,把关注点还是放到了以前测试通过的代码。代码以前没错,现在和以后不一定没错,决定权不在程序员身上,所以说程序员累。

经验

和一个朋友交流后,他说:

这不是栈溢出了么
你函数体里面分配的栈内存太大了,栈溢出了啊
函数递归最容易出这个问题

检查一下栈里面分配的内存
是不是有的函数栈里面分配的数组什么的太大了

 

但我代码里明显没递归,也没有大内存,所以感觉问题很奇怪。

排错过程

在没有办法时,就用注释法,把怀疑的代码段注释了,看怎样,通过注释,定位到了一段界面刷新代码,里面有形似如下的代码:

Sector sec=m_vec[i];
sec.icount;

这里看到有定义变量,所以试着改成不定义变量,直接使用数组项,比如

m_vec[i].icount;

问题解决

原因分析

界面绘制函数会频繁调用,在这个函数里分配变量会影响栈的使用,使栈出问题,所以在绘制函数里不要定义临时变量。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内