0

我有以下代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int pnp[2][105],fin[2][105];
    int time[105],n,m,dummy,prod = 0;
    int const maxvv = 2000000;
    int d[maxvv];
    return 0;
}

我在int d[maxvv]. 但是,如果我转移到全局范围

#include<iostream>
#include<cstdio>
using namespace std;
int const maxvv = 2000000;
int d[maxvv];
int main(){
    int pnp[2][105],fin[2][105];
    int time[105],n,m,dummy,prod = 0;

    return 0;
}

我没有收到此错误。谁能告诉我有什么区别。在 Windows 7 上使用带有 C++ 的 vs 2008

4

1 回答 1

4

你正在破坏堆栈。它的大小通常约为 1MB,而您分配的空间不止于此。移动到全局空间可以解决您的错误,因为那里的可用空间比堆栈中的空间多得多。

于 2013-02-10T08:08:05.200 回答