为什么 Segmentation fault ?
一个简单的函数,代码如下:
如果将将上面函数改为:
上面这个函数编译运行就不会错。
在网上查了下有关Segmentation fault的原因,是因为访问的内存超出了系统所给这个程序的内存空间。但不知道,为什么在上面的函数中将表达式++i放在不同位置,就造成了内存访问出错。求解答,谢谢!
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放在不同位置,就造成了内存访问出错。求解答,谢谢!
...全文
相关推荐
段错误总结
段错误总结_segmentation fault_ 是一种常见的程序错误,在 Linux 中尤为常见。今天,我们将详细总结段错误的概念、原因、避免方法等方面的知识点。什么是段错误?
QT编程中遇到Segmentation Fault错误
Qt编写的界面程序中在没有点击连接服务的的按钮时,直接点击 发送 按钮,程序就会闪退,并且出现Segmentation Fault的提示, 经过排查,发现是因为QTcpSocket建立的对象放在了 连接服务端 按钮的槽函数里边,只有点了连接服务端 的按钮,对象才会建立,而直接点 发送 按钮时候,对象并没有建立,所以会出现错误(就是还没建立对象,你就调用了,所以不知道用的哪里的对象)。 v...
Linux应用程序调试之debug_coredump
在Linux系统中,当应用程序遇到不可恢复的错误时,如段错误(Segmentation fault),系统会生成一个核心转储文件(core dump)。
C语言段错误 总结 段错误整理
一、什么是段错误?段错误(Segmentation Fault)是一种特殊的错误条件,可以在计算机软件操作期间发生。
虚拟机错误记录
Segmentation fault (core dumped)- **定义**: Segmentation fault 是一种常见的运行时错误,通常发生在程序尝试访问未分配给它的内存空间时。


新手乐园
