我碰到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 **。 –