Possible Duplicate:
Segmentation fault on large array sizes
A segmentation fault occurs when I run the program.
#include<iostream>
using namespace std;
int main(){
int x[2000][2000];
int y;
cin >> y;
}
However, the following two programs are OK, when I run them.
#include<iostream>
using namespace std;
int x[2000][2000];
int main(){
int y;
cin >> y;
}
and
#include<iostream>
using namespace std;
int main(){
int x[2000][2000];
int y;
}
I am quite confused. Can anyone tell me why?
Congratulations, you’ve found a stack overflow.
In the first example, the large array
xpushesypast the end of the stack, so accessing it crashes the program. (2) doesn’t crash because the large array you declared is in the data segment and so not on the stack; (3) doesn’t crash because you’re not actually accessing memory past the end of the stack (you’ve declared it, but aren’t reading or writing it).