weibo_山丹丹花开蛋轰熊_0
2016-03-26 17:06
这就是代码
我按楼主程序运行,在Linux下同样出现相同的情况,执行到循环时,gdb也不能打出值来。换了c-free ,第三个输出就出现莫名的值,我认为这是编译器的问题。
*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],可以改变其中的值。所以会出现崩溃的现象。至于系统为什么这么分,我猜测是编译优化的结果,如果还有别的解释,欢迎交流。
Linux C语言指针与内存
116611 学习 · 250 问题
相似问题