C/C++ stack overflow 怎样设置stack大小?解决方法

C/C++ stack overflow 怎样设置stack大小?
举一个简单的例子,用的Visual Studio 2005 C++
/*文件1.c*/
#include <stdio.h>
#define M 900
#define N 900
int main( void )
{
int a1[M][N];
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
a1[i][j]=N*i+j+1;
printf("%d ",a1[i][j]);
if(j==N-1)
printf("\n");
}
return 0;
}
调试过程中出现
1.exe 中的 0x004012d7 处未处理的异常: 0xC00000FD: Stack overflow

经调试,(对于我的系统而言)若N不变,M>286就会出现相同的错误,而M<=286时则正常通过。
此外,我试图对两个200x900数组付值时还是出现相同的错误,显然当M>=143时是一样的。

请问各位大侠,怎样调整stack的大小,或怎样才能将900x900的数组输入到内存?



------解决方案--------------------
这是vc6.0的
project->setting->link->project options->Output->Reserve
你的2005自己找吧
应该差不多
------解决方案--------------------
你把数组弄成全局变量或者malloc出来就行

#include <stdio.h> 
#define M 900 
#define N 900 

int a1[M][N]; 

int main( void ) 


int i,j; 
for(i=0;i <M;i++) 
for(j=0;j <N;j++) 

a1[i][j]=N*i+j+1; 
printf("%d ",a1[i][j]); 
if(j==N-1) 
printf("\n"); 

return 0; 


------解决方案--------------------
实在要要从栈上想办法就 #pragma comment(linker,stack:10000000,10000000),偶不赞成随便动