有未经处理的异常: 0xC00000FD: Stack overflow
程序运行时会出现 xxxx.exe 中的 0x00fa1c29 处有未经处理的异常: 0xC00000FD: Stack overflow
这样的错误,中断一下,程序会指向下面这里:
下面是我的代码:
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int Find(int **a,int x,int y,int t)
{
int count=0;
if(x-1>=0&&x-1<332&&y>=0&&y<500&&a[x-1][y]==t)
{a[x-1][y]=-t;count++;count+=Find(a,x-1,y,t);}
if(x-1>=0&&x-1<332&&y+1>=0&&y+1<500&&a[x-1][y+1]==t)
{a[x-1][y+1]=-t;count++;count+=Find(a,x-1,y+1,t);}
if(x-1>=0&&x-1<332&&y-1>=0&&y-1<500&&a[x-1][y-1]==t)
{a[x-1][y-1]=-t;count++;count+=Find(a,x-1,y-1,t);}
if(x>=0&&x<332&&y+1>=0&&y+1<500&&a[x][y+1]==t)
{a[x][y+1]=-t;count++;count+=Find(a,x,y+1,t);}
if(x>=0&&x<332&&y-1>=0&&y-1<500&&a[x][y-1]==t)
{a[x][y-1]=-t;count++;count+=Find(a,x,y-1,t);}
if(x+1>=0&&x+1<332&&y>=0&&y<500&&a[x+1][y]==t)
{a[x+1][y]=-t;count++;count+=Find(a,x+1,y,t);}
if(x+1>=0&&x+1<332&&y+1>=0&&y+1<500&&a[x+1][y+1]==t)
{a[x+1][y+1]=-t;count++;count+=Find(a,x+1,y+1,t);}
if(x+1>=0&&x+1<332&&y-1>=0&&y-1<500&&a[x+1][y-1]==t)
{a[x+1][y-1]=-t;count++;count+=Find(a,x+1,y-1,t);}
return count;
}
int main()
{
int **s;
s=new int*[332];
for(int i=0;i<332;i++)
s[i]=new int[500];
int cnt[332][500]={0};
ifstream fin;
fin.open("d:\\data\\sc.txt");
for(int i=0;i<332;i++)
{
for(int j=0;j<500;j++)
{
fin>>s[i][j];
}
}
fin.close();
for(int i=332;i<1;i++)
{
for(int j=0;j<500;j++)
{
cnt[i][j]=Find(s,i,j,s[i][j]);
cout<<cnt[i][j]<<" ";
}
cout<<endl;
}
getchar();
return 0;
}
代码中的txt文件就是332*500的整型数据,均在0-71之间,我不知道怎么传上来,如果需要我可以传给你,我想知道为什么总会出现中断?
[解决办法]
将“项目属性、链接器、系统、堆栈保留大小”设大一点比如16000000再试试?