注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

栈溢出的BUG  

2011-09-29 19:43:40|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

栈溢出的BUG
下午调试程序好好的程序突然到处崩溃,一开始以为是下面的数据上传过快,造成缓冲区被覆盖,结果认真的看了看,也不是这个问题,后来又把上传的速度慢了几倍,仍然很快就出现这个错误。
无奈只好下断点调试,结果程序定位到了memmove这个函数,在这个函数前,缓冲区的地址指针是正常的,这个函数使用后,地址变成了无效的指针,看拷贝的数据长度,大约有上万,这个东东太大了,不符合实际情况。
同事说是不是内存溢出,头中一闪亮,肯定是栈溢出了,说试就试,定义一个二级指针,取得了当前缓冲区的地址指针地址,结果更郁闷,突然不能下断点儿了,删除了NCB啥滴也不行,还是用了老方法重新格式化了文本的格式才好了。果不其然,没用这个拷贝函数前,二级指针里存的正好是缓冲区的指针,而过了这个函数后,内存区域一片鲜红,表明全部改变了,我滴亲亲滴神。
改好这里,结果下面还是有这个错误,最后找到原因,原来我们的规约进行了升级,这个还是老的,造成拷贝时的长度计算异常,多拷了几千个,栈溢出是不可避免的了。
可是这个程序报得错误很奇特,而且无法在堆栈里进行回溯,只好用最古老的办法才定位出来,看来在线程里做这些东西真是不容易。
还是那句话:实践出真知啊。

  评论这张
 
阅读(828)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017