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的数组输入到内存?
            3条回答         
这是vc6.0的 project->setting->link->project options->Output->Reserve 你的2005自己找吧 应该差不多 
gogaga     2014-07-02 16:13:10          
评价(0)(0)(0)引用
你把数组弄成全局变量或者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; }
#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; }
gogb2312     2014-07-02 16:13:10          
评价(0)(0)(0)引用
实在要要从栈上想办法就 #pragma   comment(linker,stack:10000000,10000000),偶不赞成随便动
wjhelr     2014-07-02 16:13:10          
评价(0)(0)(0)引用

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号