浅析错误 Run-Time Check Failure #2 - Stack around the variable ‘a‘ was corrupted
发布日期:2021-07-01 04:04:05
浏览次数:4
分类:技术文章
本文共 1694 字,大约阅读时间需要 5 分钟。
浅析错误 Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted
问题叙述
最近在写循环嵌套的时候老是报错:Run-Time Check Failure #2 - Stack around the variable ‘a’ was corrupted
百思不得其解,循环没有问题,网上查找错误,都说是内存越界造成的,于是各种扩大数组大小,仍然报错。
以下是测试程序:#includeusing namespace std;#define MAX_AXES 4int main(){ int axispos[MAX_AXES]; int axisvel[MAX_AXES]; int time[10] = { 0 }; for (int i = 0; i < MAX_AXES; i++) { axispos[i] = i; axisvel[i] = i; } int a[10 * (MAX_AXES * 2 + 1)]; for (int i = 0; i < 10; i++) { a[i*(2 * MAX_AXES + 1)] = time[i]; cout << a[i*(2 * MAX_AXES + 1)] << "|"; for (int j = 0; j < MAX_AXES; j++) { a[i*(2 * MAX_AXES + 1)+2*j-1] = axispos[j]; a[i*(2 * MAX_AXES + 1) + 2 * j] = axisvel[j]; cout << a[i*(2 * MAX_AXES + 1) + 2 * j - 1] << "|" << a[i*(2 * MAX_AXES + 1) + 2 * j] << "|"; } cout << endl; } return 0;}
在老王大腿的指导下,找到了问题所在。
在第2层循环中,有一句a[i*(2 * MAX_AXES + 1)+2*j-1] = axispos[j];
,当i,j都为0的时候,a的索引变成了-1,于是引起数组越界问题。 解决方案
把循环从0开始换成从1开始
#includeusing namespace std;#define MAX_AXES 4int main(){ int axispos[MAX_AXES]; int axisvel[MAX_AXES]; int time[20] = { 0 }; for (int i = 0; i < MAX_AXES; i++) { axispos[i] = i; axisvel[i] = i; } int a[10 * (MAX_AXES * 2 + 1)]; for (int i = 0; i < 10; i++) { a[i*(2 * MAX_AXES + 1)] = time[i]; cout << a[i*(2 * MAX_AXES + 1)] << "|"; for (int j = 1; j <= MAX_AXES; j++) /// { a[i*(2 * MAX_AXES + 1)+2*j-1] = axispos[j-1]; a[i*(2 * MAX_AXES + 1) + 2 * j] = axisvel[j-1]; cout << a[i*(2 * MAX_AXES + 1) + 2 * j - 1] << "|" << a[i*(2 * MAX_AXES + 1) + 2 * j] << "|"; } cout << endl; } return 0;}
为什么各种尝试都没有发现?原因在于形成了定式思维,一说超限首先想到的是上界超限,于是开始钻牛角尖………………
结论
- 定式思维要不得!!!!
转载地址:https://miracle.blog.csdn.net/article/details/93471395 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月29日 18时10分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux png转jpg (convert命令)
2019-04-30
vscode git
2019-04-30
CodeForces - 456C Boredom (dp)
2019-04-30
CodeForces - 1042B Vitamins (思维)
2019-04-30
ACM 2013 长沙区域赛 Collision (几何)
2019-04-30
ACM 2014 鞍山区域赛 E - Hatsune Miku (dp)
2019-04-30
反向传播&梯度下降 的直观理解程序(numpy)
2019-04-30
ACM 2017 北京区域赛 J-Pangu and Stones(区间dp)
2019-04-30
java常用类 String面试题
2019-04-30
四线触摸屏原理
2019-04-30
C/C++如何返回一个数组/指针
2019-04-30
腾讯AI语音识别API踩坑记录
2019-04-30
java.net.BindException: 无法指定被请求的地址
2019-05-01
svn服务器安装
2019-05-01
spark 笔记1
2019-05-01
shell dirname basename
2019-05-01
未来已至,5G加持下的云游戏将走向何方?
2019-05-01
计算机网络 —— 网络层 1.
2019-05-01
Android 之 ContentProvider 与 ContentResolver
2019-05-01