精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究
最近完成一个小项目里的统计功能,合并同事写的代码时遇到这个问题,合并的新代码没问题,合并前的功能测试也没问题,遇到了这个问题后,就觉得有点头疼。把合并代码排除后,把关注点还是放到了以前测试通过的代码。代码以前没错,现在和以后不一定没错,决定权不在程序员身上,所以说程序员累。
和一个朋友交流后,他说:
这不是栈溢出了么
你函数体里面分配的栈内存太大了,栈溢出了啊
函数递归最容易出这个问题
但我代码里明显没递归,也没有大内存,所以感觉问题很奇怪。
在没有办法时,就用注释法,把怀疑的代码段注释了,看怎样,通过注释,定位到了一段界面刷新代码,里面有形似如下的代码:
Sector sec=m_vec[i]; sec.icount;
这里看到有定义变量,所以试着改成不定义变量,直接使用数组项,比如
m_vec[i].icount;
问题解决
界面绘制函数会频繁调用,在这个函数里分配变量会影响栈的使用,使栈出问题,所以在绘制函数里不要定义临时变量。