Process is terminated due to StackOverflowException. 是什么缘故

xiongjiqw 2010-01-22 01:18:58
这是一个折半查找的代码:

#define N 10000000

int main()
{
int a[N],i;

for (i=0;i<N;i++)
a[i]=i;

int x=0,end=0,start=0,middle=0;

scanf ("%d",&x);

start=0;
end=N-1;

while (start<=end)
{
middle=(start+end)/2;

if ( x> a[middle] )
{
start = middle + 1;
} else if (x < a[middle]) {
end = middle - 1;
} else {
printf ("The number %d has been found!\n",x);
exit (0);
}
}
}

如果把 #define N 1000000 改为 #define N 100 就没事了,而改为 #define N 122976 运行没有问题而输入有问题,N 大于122976 运行后立即出现问题。难道C语言限制数组容量吗?
...全文
553 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Damon_lan 2010-08-23
  • 打赏
  • 举报
回复
我今天也遇到了这个问题。。不知道怎么解决。。
xiongjiqw 2010-01-22
  • 打赏
  • 举报
回复
怎么修改栈大小呢?谢谢
xylicon 2010-01-22
  • 打赏
  • 举报
回复
堆栈溢出了,说的很明确了。你数组在堆栈中分配内存,如果你自己没修改的话,一般编译器默认分配的堆栈最大值是1M。
macrojj 2010-01-22
  • 打赏
  • 举报
回复
栈溢出了 你可以修改栈的大小。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧