關於CPP堆疊的乙個好玩的bug

2021-09-25 02:46:21 字數 739 閱讀 6758

#includeusing namespace std;

void fun(int *(&p))

int main()

執行結果:

在測試的時候,發現最後兩句輸出語句,輸出的*p的值竟然不同!!!!當時就震驚了,第一感覺就是cout語句竟然能夠改變指標指向位址的內容(注:經過測試,指標本身指向的位址沒有變化)。陷入了對人生深深的懷疑。

棧:編譯器自動分配管理的記憶體區,區域性變數,函式引數等都是放置在該區域。對於區域性變數,其在離開所在程式塊的時候會被自動銷毀。

堆:動態記憶體區域。需要程式設計師手動分配,釋放的記憶體區域。

全域性/靜態儲存區:全域性變數以及靜態變數存放的區域,其在程式啟動的時候分配,在程式結束的時候自動銷毀。

常量儲存區:存放常量,不允許修改。放置在**段中

區域性物件:在定義的時候被建立,在離開所在程式塊的時候被自動銷毀。

全域性物件:在程式啟動的時候建立,在程式結束的時候自動被銷毀。

動態物件:只有程式設計師顯示的銷毀才會被銷毀。

上述程式的問題就是出在,在函式fun中將p指向了乙個區域性變數。當從函式返回的瞬間,這個區域性變數還沒有被銷毀,在下一條指令執行的瞬間,這個區域性變數被銷毀,所以其內值發生了變化。

換句話說,只要從fun返回後,任意執行一條指令,*p的值都會發生變化的。

乙個關於DropDownList的小bug

發現乙個奇怪的毛病 設定dropdownlist的item時我加了三個屬性值 工人 農民 知識份子 頁面瀏覽時下拉列表裡的三個變成了 農民 知識份子 農民 後來發現乙個規律,把哪個屬性值放到最上面的時候,瀏覽頁面時哪個屬性值就會消失,最後乙個反而會重複出現。除錯了好多次一直沒有解決。為什麼呢.sol...

想到乙個好玩的

想到乙個好玩的,沒人寫乙個下五子棋的程式,然後再想辦法統一介面,再由某些高手來寫乙個管道程式 用bash現成的也行 然後用程式和程式來比看哪個五子棋更厲害!為了防止作弊,可能需要第三方監督程式,呵呵。忽然想到的小靈感,挺有意思的!除了五子棋各種各樣的都可以咯,統一介面暫時簡單的想到了幾種,第一種下了...

mysql5 1 系列 關於使用者授權的乙個bug

不知道我這文章名字這樣寫是否精確,但是我在5.1.37 和 5.1.60 兩個版本上碰到了這樣的問題。以前 鏈結資料庫的使用者許可權是 grant all on to user identified by password 後來感覺這樣的許可權太大,想修改為只能從特定主機訪問特定庫,於是執行 rev...