首页 > 代码库 > 谨防数组越界!
谨防数组越界!
今天第一次对数组越界问题有了深切的感受,数组越界如果在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直接放行
因为这时候VS2010根本不会对越界问题进行检测!
在Debug版本下运行:
Debug版本的检测效果也是很小的,用变量方式引用数组下标直接放行:
看来应该始终在脑海中注意这个问题,否则当数组越界时,看着程序的莫名其妙的输出只能犯晕了!
谨防数组越界!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。