关于C++内存的一些东西

ZHO*_*HOU 2 c++ memory

可能重复:
大型阵列上的分段错误

运行程序时发生分段错误.

#include<iostream>
using namespace std;

int main(){
    int x[2000][2000];
    int y;
    cin >> y;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它们时,以下两个程序都可以.

#include<iostream>
using namespace std;

int x[2000][2000];
int main(){

    int y;
    cin >> y;
}
Run Code Online (Sandbox Code Playgroud)

#include<iostream>
using namespace std;

int main(){
    int x[2000][2000];
    int y;
}
Run Code Online (Sandbox Code Playgroud)

我很困惑.谁能告诉我为什么?

eca*_*mur 9

恭喜你,你发现了堆栈溢出.

在第一个示例中,大型数组x推送y超过堆栈的末尾,因此访问它会导致程序崩溃.(2)不会崩溃,因为您声明的大型数组位于数据段中,因此不在堆栈中; (3)不会崩溃,因为你实际上没有访问堆栈末尾的内存(你已经声明了它,但没有读取或写入它).