Run-Time Check Failure #2 - Stack around the variable 'ucPriKey' was corrupt
Run-Time Check Failure #2
一般是栈被破坏,你的代码可能有缓冲区溢出一类的问题。
Run-Time Check Failure #2 - Stack around the variable 'var' was corrupted
摘要:
简介VC++.NET编译新功能,运行时错误检查,编译选项 (/RTC1, equiv. to /RTCsu)
最近把一个别人早期在VC 6下编写的一个服务移植到VC 7.1 (.NET 2003)时,突然跳出
好些运行时错误提示。
经过查询编译器和出错说明,发现了编译器的这一新特性,并修正了代码隐患:
//someheadefile.h
typedef struct tarSomeMessagePack
{
char moibleNumber[20];
....
}SomeMessagePack_T,*SomeMessagePack_Ptr;
细心的开发者可能已经发现,这里使用字符串数组下标越界了。即mobileNumber[]有效元素
下标为0到19,mobileNumber[20]是非法的。在VC 6下,编译运行并没有处任何问题,这也结
构体在内存字节对齐也有关系,实际上,mobileNumber[]在默认与8字节对齐的环境下编译链
接的,因此,后4个bit也不会被系统用到,即mobileNumber[20],mobileNumber[21],
mobileNumber[22],mobileNumber[23]系统把它空着。
尽管系统运行同几年都很正常,但
strncpy(pack.mobileNumber," ",20);
这样的代码也是危险的代码,要是有一天,把这个结构体字节对齐方式改为1,那么程序一定
在这里崩溃。
VC7.1为我们提供了一种机制,在编译选项中,增加(/RTC1, equiv. to /RTCsu)项选。当程序
运行到这里的时候,即会向我们报告这一错误。
查看相关文档,了解了这一块代码的真实意图后,我把代码改为
strncpy(pack.mobileNumber," ",19);
这一问题消失。
//someimplement.cpp
strncpy(pack.mobileNumber," ",20);
郑注:这就是一些变量的内存访问出错造成的,而且在错误对话框中明显的提出了是哪个变量访问出错,可以查这个变量得到结果。典型的错误:如定义了一个TCHAR Code[1];,结果在使用中使用到了Code[1],就产生了这个错误
Run-Time Check Failure #2 - Stack around the variable 'ucPriKey' was corrupt的更多相关文章
- VS2008中Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted 错误解决方法
问题 : 在用VS2008写一段代码,算法都没有问题,但是调试的时候发现出了main之后就报 Stack around the variable 'xxx' was corrupted 的错误,后来发 ...
- Run-Time Check Failure #2 Stack around the variable ‘xxx’ was corrupted
在改别人代码时,运行报错: Run-Time Check Failure #2 Stack around the variable 'buffer' was corrupted 这表明你对某变量的赋值 ...
- c++. Run-Time Check Failure #2 - Stack around the variable 'cc' was corrupted.
Run-Time Check Failure #2 - Stack around the variable 'cc' was corrupted. char cc[1024]; //此处如果索引值 ...
- Run-Time Check Failure #2 - Stack around the variable 's' was corrupted. 出现了 。
程序中存在内存越界,注意数组大小和数据大小.
- vs中“Stack around the variable was corrupted”的解决方案
把 project->配置属性->c/c++->代码生成->基本运行时检查 为 默认值 就不会报本异常.具体原因正在研究中... 如果改为其他就有exception. exce ...
- vs中 Stack around the variable 'XXX' was corrupted.
https://blog.csdn.net/hou09tian/article/details/75042206 把 project->配置属性->c/c++->代码生成->基 ...
- C++程序在debug模式下遇到Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call问题。
今天遇到一个Access Violation的crash,只看crash call stack没有找到更多的线索,于是在debug模式下又跑了一遍,遇到了如下的一个debug的错误提示框: 这个是什么 ...
- Run-Time Check Failure #0
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is ...
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. 调用函数约定不同
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is ...
随机推荐
- Html DOM 常用属性和方法
Node对象的节点类型***************************************************接口 nodeType常量 nodeType值 备注Element Node ...
- bzoj 3823: 定情信物 线性筛逆元
3823: 定情信物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 108 Solved: 2[Submit][Status] Descriptio ...
- ALV 行列 颜色
1)颜色含义 1:海蓝:2:浅清:3:黄色:4:浅蓝:5:青色:6:红色:7:橙色.(1)首位为主颜色:(2)次位为辅助颜色:(3)末位为0时,表示首位数字表为表格的底色:末位为1时,则表示以1为底色 ...
- [科普贴]为何Flash被淘汰?附Chrome看视频最完美教程!
Adobe 公司放弃 移动 平台的 Flash 支持已经是板上钉钉的事了, Google Play 的 Flash 插件也会在 8 月份下架,这在一定程度上也会促进 HTML5 的发展和普及,因此我个 ...
- mytbatis配置多数据源
http://blog.zous-windows.com/archives/207.html http://www.oschina.net/question/144055_141255?sort=ti ...
- 太受不了了,,REST_FRAMEWORK太方便啦~~
按英文原始的DOCUMENT走一圈,从最手工的输出到高度的集成. 最后真的就几行代码,实现最常用的JSON API..纯RESTFUL风格. 但,其核心是要记住序列化生反序列的过程,都是要以PYTHO ...
- 移动周报:十款最实用的Android UI设计工具
上一周可以说是一个不断Mark周,从最实用的Android UI设计工具.免费移动应用测试框架推荐,到HTML5开发框架等等,各种开发工具.框架精彩丰呈,看得小伙伴们是不亦乐乎.当然,还有不容错过的M ...
- Android 基础知识点(持续更新)
一.AndroidManifest 每一个安卓工程都有AndroidManifest.xml的配置文件,在所有项目中该名称都不会变.该文件是Android工程的一个全局配置文件,所有在Android中 ...
- C++使用http请求,亲测可用,VS2008编译运行通过
int CMyFunctionsDlg::request(char* hostname, char* api, char* parameters) { WSADATA WsaData; WSAStar ...
- 通过ip获取地理位置信息
http://ipinfo.io/developers 直接使用get请求 url: http://ipinfo.io/json 即可获得json数据