【发布时间】:2018-10-30 18:49:07
【问题描述】:
当我在 X64 计算机上使用 GCC 编译器运行下面的代码时,i 的输出为 90,但在 x86 上运行时它的值仍然为 2,那么处理内存的区别在哪里?
#include <stdio.h>
int main(void)
{
int arr[3]={50,7,30};
int i=2;
arr[3]=90;
printf("arr[2]=%d,arr[3]=%d,i=%d", arr[2], arr[3], i);
return 0;
}
【问题讨论】:
-
没有
arr[3]。它超出了范围。 -
arr[3]=90;写入超出数组范围 --> 未定义行为 -
当你编译 x64 时,在编译行添加
-O3...我敢打赌你会感到惊讶。 -
@AlexLop。哪个编译行!?
标签: c memory x86 64-bit x86-64