码迷,mamicode.com
首页 > 其他好文 > 详细

谨防数组越界!

时间:2014-09-11 22:11:12      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   strong   2014   div   

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

测试下面的代码,

 1 #include <stdio.h>
 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直接放行

bubuko.com,布布扣

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

在Debug版本下运行:

bubuko.com,布布扣

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

bubuko.com,布布扣

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

谨防数组越界!

标签:style   blog   http   color   io   ar   strong   2014   div   

原文地址:http://www.cnblogs.com/xxNote/p/3967315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!