为什么 Segmentation fault ?

jeff_nie jeff_nie 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个简单的函数,代码如下:

void avg (int a[])
{
int i = 0;
int sum = 0;
while (i < size, ++i) // 此处表达式 ++i,编译运行时报:Segmentation fault
sum += a[i];
}


如果将将上面函数改为:

void avg (int a[])
{
int i = 0;
int sum = 0;
while (i < size)
{
sum += a[i];
++i; // 把 ++i放到循环体内就OK
}
}

上面这个函数编译运行就不会错。

在网上查了下有关Segmentation fault的原因,是因为访问的内存超出了系统所给这个程序的内存空间。但不知道,为什么在上面的函数中将表达式++i放在不同位置,就造成了内存访问出错。求解答,谢谢!
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
jeff_nie
新手乐园 33,315 成员 41,769 内容