在一次调试经历中,惊现数组越界,而VS编译器竟然没有报错,还能正常输出结果。
网上查了一番,原来只要数组越界,访问的还是本进程的地址,编译器就不会报错,甚至有可能访问到的还是本数组内的地址,如N[2][6] 与数组N[4][3] 访问到的是相同的地址,因为这些数组元素在内存中就是连续排放的,[ ]只是提供了一种索引的方式。
在一次调试经历中,惊现数组越界,而VS编译器竟然没有报错,还能正常输出结果。
网上查了一番,原来只要数组越界,访问的还是本进程的地址,编译器就不会报错,甚至有可能访问到的还是本数组内的地址,如N[2][6] 与数组N[4][3] 访问到的是相同的地址,因为这些数组元素在内存中就是连续排放的,[ ]只是提供了一种索引的方式。