我想查一下有关访问冲突的内容,所以我写下了这段代码:
int a[] = {1,2,3};
for(int i=0; i < 20000; i++) {
cout << i << ": " << a[i] << endl;
}
它应该崩溃。
现在,这段代码应该是段错误的,因为20000太高了,我超出了我的地址空间,对吗?
我不知道的是为什么它会在不同的i
上出现段错误。每次运行此代码时,我都会在不同的位置获得segfault。那是因为我的数组是在堆栈的不同位置分配的,并且比以前有更多或更少的地址空间吗?
答案 0 :(得分:4)
你的堆栈是在某处分配的。你不知道你的堆栈离你最近的内存地址有多远。