读书人

数组的大小疑点

发布时间: 2012-03-03 15:33:03 作者: rapoo

数组的大小问题
如下一段代码,编译链接都可以通过,但运行时就报错,为什么?
若把数组大小变为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];

读书人网 >C语言

热点推荐