c++运行闪退怎么办?
一个判断数组是否由大到小排列的函数运行时闪退了 求解什么情况?
#include
#include
int in_order(int x,int y){
int i,j=0;
int z[1000][1000];
for(i=0;i
if(z[x][i]>=z[x][i+1])
j=j+1;
else
continue;
}
if(j==y-1)
return 1;
else
return 0;
}
int main(int argc, char *argv[]){
int x,a[1][3]={3,2,1};
x=in_order(0,2);
printf("%d",x);
system("PAUSE");
return 0;
}
------解决方案--------------------
int z[1000][1000];因为这个需要的内存很大,直接不够用了。
一个int是4Byte,1000个int是4KB,1000000个int是4MB,记得VC默认的栈大小是1M还是2M来着,直接栈溢出此外,从程序上看,in_order函数检验的是内部的数组z,跟外面的数组a没关系
需要使用指针传值
赞 (0)