您的位置:首页 > 其它

【C】溢出问题

2016-05-28 22:31 218 查看
溢出问题

有一天,加入不小心写成了下列程序

让我们想想程序会怎么样运行

#include<stdio.h>
int main()
{
int i=0;
int a[10];
for(;i<=10;i++)
{
printf("这是一行文字\n");
a[i]=0;
}
return 0;
}

我们先猜测一下,i从0到10,应该输出11次文字

然而··



程序进行死循环了。。。

为什么呢??

再想一下,for循环的执行条件是i<10的时候,才会进行循环

死循环是不是表示着。。

i一直没能大于10!

那么,究竟是为什么呢?

接下来,让我们从内存分析一下


如果先定义数组,再定义i

就不会出现这种状况了。

在将他们定义顺序互换后



程序还是“死了”,是因为第11次输出后

接下来的a[10]语句溢出无法执行

针对本次论述的溢出问题,不同的新型编译器会有不同的解决方案

其中一种就是

在 i 和数组之间加上 一两块内存 以保证不会在不小心的情况下溢出太多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: