gcc 里面因为a[9]被设置位0,也就是内存中在数组a之后的一个字的内存被设置为0.gcc编译这段程序是按照地址递减的方式来给变量分配给变量i。此时,本来i的值为10,循环体将不存在的a[10]设置为0,实际上却是将i设置为0,这样就成了死循环。
你都知道了有数组越界访问还问。。。看反汇编啊。反汇编可以明确告诉你一切
VS里面设断点,按ALT+8看反汇编
GCC编译时使用/S参数看反汇编 // 说错了,把反字去掉,对GCC来说只是中间代码,不是从可执行文件"反"出来的
[ 本帖最后由 leeco 于 2009-9-20 16:19 编辑 ]