我碰到this page,它说明了创建悬挂指针的常见方法。fflush()在悬挂指针方面做了什么?
下面是使用局部变量的返回地址说明悬摆指针代码:
在运行这个,这是编译器警告我得到(预期):
In function 'fun':
12:2: warning: function returns address of local variable [-Wreturn-local-addr]
return &x;
^
这是输出我得到(到目前为止好):
32743
然而,当我合作mment了fflush(标准输出)线,这是输出我得到(使用相同的编译器警告):
5
什么是这种现象的原因? fflush命令的存在/缺失如何导致此行为更改?
http://stackoverflow.com/a/6445794/12711 –
“*什么是对这种行为的原因是什么?*”这是**未定义行为**。你使用'fflush'是无关紧要的。 ('fflush'清空'stdout'的内容,但由于您没有缓冲内容,所以它没有任何合法的用途)。你可能会得到'5',你可能会得到一个'Segmentation Fault',它是** Undefined **。 –