问答详情
源自:5-2 指针运算

为什么出现这种情况Segmentation fault (core dumped)


这就是代码http://img.mukewang.com/56f650ce0001670705150411.jpg

提问者:weibo_山丹丹花开蛋轰熊_0 2016-03-26 17:06

个回答

  • 慕后端9788028
    2016-09-25 11:09:17

    我按楼主程序运行,在Linux下同样出现相同的情况,执行到循环时,gdb也不能打出值来。换了c-free ,第三个输出就出现莫名的值,我认为这是编译器的问题。

  • hunterchina
    2016-04-06 20:45:27

    *p = 2

    *p = 1

    *p = 5

    *p = 1417759240

    *p = 32767

    *p = 1

    *p = 10

    *p = 100

    *p = 0

    -----------------

    p[0]=2

    p[1]=1

    p[2]=5

    p[3]=1417759228

    p[4]=32767

    p[5]=1

    p[6]=10

    p[7]=100

    p[8]=0

    删掉p[3]=101这条语句后的运行结果如上,由结果可知,p[3]、p[4]都指向了系统分配的存储其他数据的内存空间,是不可操作的,p[5]指向了array[0],可以改变其中的值。所以会出现崩溃的现象。至于系统为什么这么分,我猜测是编译优化的结果,如果还有别的解释,欢迎交流。