我很震驚,爲什麼這段代碼給我一個分段錯誤?這爲什麼會導致分段錯誤?
#include <stdio.h>
#define LIMIT 1500000
typedef struct {
int p;
int a;
int b;
} triplet;
int main(int argc, char **argv) {
int i;
triplet triplets[LIMIT];
for (i = 0; i < LIMIT; i++) {
triplets[i].p = 9; // remove this line and everything works fine
}
printf("%d\n", triplets[15].p);
return 0;
}
編輯:改變LIMIT 150我不再出現段故障後,它打印的隨機數代替。
EDIT2:現在我知道什麼網站名稱代表:)我使數組全球,現在一切正常。
的數字是什麼碰巧在棧上做(因爲你只初始化前五個數組元素,但你打印16) 。 – Shog9 2011-01-11 23:53:58
`它會打印隨機數字。'你究竟打印了什麼?顯示整個代碼。 – Mahesh 2011-01-12 00:02:01
@Mahesh:請閱讀最後三行。 – orlp 2011-01-12 00:04:38