long long数组开在main内出现无法输入的情况

以下是可以正常运行的C++代码程序:

#include<iostream>
#include<cstring>
const int maxn = 1510;
long long minnum[maxn][maxn];
using namespace std;
int main() {
    int n;
    cin>>n;
    for(int i = 0; i < n; i++)
        for(int j = 0; j <= i; j++)
            cin>>minnum[i][j];
    for(int i = n-2; i >= 0; i--)
        for(int j = 0; j <= i; j++)
            if(minnum[i+1][j] < minnum[i+1][j+1])
                minnum[i][j] = minnum[i][j] + minnum[i+1][j];
            else minnum[i][j] = minnum[i][j] + minnum[i+1][j+1];
    cout<<minnum[0][0];
    return 0;
}    

img

但是将long long minnum[maxn][maxn]开在main函数内,并加一句”memset(minnum, 0, sizeof(minnum));"在Windows下运行,会出现无法输入的情况,这是为什么?

#include<iostream>
#include<cstring>
const int maxn = 1510;
using namespace std;
int main() {
    long long minnum[maxn][maxn];
    memset(minnum, 0, sizeof(minnum));
    int n;
    cin>>n;
    for(int i = 0; i < n; i++)
        for(int j = 0; j <= i; j++)
            cin>>minnum[i][j];
    for(int i = n-2; i >= 0; i--)
        for(int j = 0; j <= i; j++)
            if(minnum[i+1][j] < minnum[i+1][j+1])
                minnum[i][j] = minnum[i][j] + minnum[i+1][j];
            else minnum[i][j] = minnum[i][j] + minnum[i+1][j+1];
    cout<<minnum[0][0];
    return 0;
}    

临时变量太大了。
放在main函数里,long long minnum[maxn][maxn]数组就是个局部变量,局部变量没有这么大空间给你,所以失败了
放在main函数之上,就是全局变量,全局变量空间大,能够分配给你这个空间,所以OK

太大了,long long minnum[1050][1050]局部变量没有这么大空间给你,放在main函数外吧,应该就没问题了


可以看下cpp参考手册中的 c++-atomic_long