gcc-4.1对数组越界并没有进行干涉,当数组越界发生时,会出现segmentation fault错误,然而gcc-4.3.2以后对数组越界进行了优化,譬如:定义了数组tmp[100],当越界操作出现后,访问会被限制在数组边界上,即访问tmp[102]会最终限制为tmp[99],不会真正发生越界。
因此在编写可移植代码时一定要注意数组越界问题的规避,尽量不要编写带有越界错误的代码,因为较高版本gcc编译出的程序,运行时不会产生错误,然而相同的代码使用较低版本gcc编译,运行便会出现段错误,这个问题会容易让人一头雾水,需要花时间仔细追查代码。
因此好的编码习惯非常重要,要尽量避免数组越界。
本文出自 “千里之行,始于足下” 博客,转载请与作者联系!