博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
谨防数组越界!
阅读量:6901 次
发布时间:2019-06-27

本文共 785 字,大约阅读时间需要 2 分钟。

今天第一次对数组越界问题有了深切的感受,数组越界如果在Release版本中运行也不会报错,如果是Debug版本的话,若直接通过常量数值引用数组下标会被检测到数组越界,若通过变量引用数组下标也是不会被检测到的!!!

测试下面的代码,

1 #include 
2 3 int main(void) 4 { 5 int arr[1][1] = {
20}, brr[1] = {
1}, y = 5; 6 7 //printf("%d\n", arr[5][0] == 0);//Debug版本下,直接用常量引用数组下标会被VS2010检测到数组越界 8 printf("%d\n", arr[y][0] = 10); //Debug版本下不报错,如果通过变量引用数组下标,越界根本就不会被检测到!!! 9 //printf("%d\n", brr[5] = 0);  //Debug版本下,直接用常量引用数组下标会被VS2010检测到数组越界10 printf("%d\n", brr[y]);      //Debug版本下不报错,如果通过变量引用数组下标,越界根本就不会被检测到!!!11 12 return 0;13 }

在Release版本下面运行,那四个printf里面数组虽然越界,但是VS2010直接放行

因为这时候VS2010根本不会对越界问题进行检测!

在Debug版本下运行:

Debug版本的检测效果也是很小的,用变量方式引用数组下标直接放行:

看来应该始终在脑海中注意这个问题,否则当数组越界时,看着程序的莫名其妙的输出只能犯晕了!

转载于:https://www.cnblogs.com/xxNote/articles/3967315.html

你可能感兴趣的文章
SQL语句熟悉
查看>>
Android:多语言对应实现
查看>>
计蒜客 宝藏 (状压DP)
查看>>
开个小灶——turtle 海龟图形
查看>>
C++11 auto and decltype
查看>>
微信小程序 页面跳转navigator与传递参数
查看>>
常用正则表达式速查表
查看>>
Lua模式匹配
查看>>
poj 1251
查看>>
spring_3最小化Spring XML配置
查看>>
Struts 基础开发---day02
查看>>
Codeforces 456C - Boredom(简单DP)
查看>>
IE9 打不开界面也不报错,只有打开控制台才会显示 - console
查看>>
String,int,Integer,char 类型转换
查看>>
[LeetCode] Permutations II 解题报告
查看>>
20921进程的描述与控制
查看>>
int 和 Integer 有什么区别
查看>>
english单词笔记 001
查看>>
CPU和GPU的区别
查看>>
linux 打包 | autoconf 使用方法
查看>>