回 帖 发 新 帖 刷新版面

主题:C++ 定义数组必须前面加static才能正确运行

C++ 定义数组必须前面加static才能正确运行,否则会出现运行错误,各位大神求解释

下面是代码是不能正确运行的:

#include<iostream>
using namespace std;
int main()
{

 int a[100000][4000],i,j;
for(i=0;i<99999;i++)
     for(j=0;j<3999;j++)
        a[i][j]=i+j;
 for(i=0;i<99999;i++)
     for(j=0;j<3999;j++)
     cout<<"a["<<i<<"]"<<"["<<j<<"]"<<endl;
 getchar();
 return 0;
}

 

 

下面的是能运行的:

#include<iostream>
using namespace std;
int main()
{

static  int a[100000][4000],i,j;
for(i=0;i<99999;i++)
     for(j=0;j<3999;j++)
        a[i][j]=i+j;
 for(i=0;i<99999;i++)
     for(j=0;j<3999;j++)
     cout<<"a["<<i<<"]"<<"["<<j<<"]"<<endl;
 getchar();
 return 0;
}

 

回复列表 (共3个回复)

沙发

栈空间太小,设大点

板凳


函数内普通声明的空间实在栈上分配的,不能超过10M,申请的空间太大

3 楼


栈空间不足,你加个static是在堆中申请空间,和new申请空间一样

我来回复

您尚未登录,请登录后再回复。点此登录或注册