访问数组时的c ++段错误

时间:2015-09-28 20:50:32

标签: c++ segmentation-fault

我想查一下有关访问冲突的内容,所以我写下了这段代码:

int a[] = {1,2,3};
for(int i=0; i < 20000; i++) {
    cout << i << ": " << a[i] << endl;
}

它应该崩溃。

现在,这段代码应该是段错误的,因为20000太高了,我超出了我的地址空间,对吗?

我不知道的是为什么它会在不同的i上出现段错误。每次运行此代码时,我都会在不同的位置获得segfault。那是因为我的数组是在堆栈的不同位置分配的,并且比以前有更多或更少的地址空间吗?

1 个答案:

答案 0 :(得分:4)

你的堆栈是在某处分配的。你不知道你的堆栈离你最近的内存地址有多远。