首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组的大小疑点

2012-03-03 
数组的大小问题如下一段代码,编译链接都可以通过,但运行时就报错,为什么?若把数组大小变为64735,运行时不

数组的大小问题
如下一段代码,编译链接都可以通过,但运行时就报错,为什么?
若把数组大小变为64735,运行时不报错,但是没有任何输出。

int   _tmain(int   argc,   _TCHAR*   argv[])
{
unsigned   long   int   i,N;
N=64736;
double   A[2][64736];

for(i=0;i <N;i++)
                            {
                      A[0][i]=0.0;
A[1][i]=0.0;
}

system( "cls ");

printf( "The   original   data,Ak:\n ");
for(i=0;i <N;i++)
    printf( "%4lu:%15.9f   %16.9ei\n ",i,A[0][i],A[1][i]);

return   0;
}

[解决办法]
#pragma comment(linker, "/STACK:65536,6553600 ")//加上这句
int _tmain(int argc, _TCHAR* argv[])
{
unsigned long int i,N;
N=64736;
double A[2][64736];

for(i=0;i <N;i++)
{
A[0][i]=0.0;
A[1][i]=0.0;
}

//system( "cls ");

printf( "The original data,Ak:\n ");
for(i=0;i <N;i++)
printf( "%4lu:%15.9f %16.9ei\n ",i,A[0][i],A[1][i]);

return 0;
}
主要是你程序中栈不够用了,建议用堆,不过加上我写的那句也可以
[解决办法]
double A[2][64736];
====================================
这个占用的字节数超过1M,可能导致栈溢出了。
不知道楼主用的是什么编译器,VC,如果你不去手工设它,它生成出来的程序默认的栈大小是1M。

[解决办法]


double (*A)[64736] = new double[2][64736];

热点排行