看板 C_and_CPP 關於我們 聯絡資訊
放在stack中的物件 不是在block結束或函數結束時會回收記憶體嗎? 舉個例子 一個普通函數: vector<int> *method(){ vector<int> v = {1,2,3}; vector<int> *p = &v; return p; } v物件的生命週期不是只到此函數結束? 但我在主程式 auto p = method(); 之後還是可以透過p指標來操作v 表示v還存在? 請問為何會這樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.71.28.102 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450148730.A.257.html
Caesar08: 是,那只是碰巧可以罷了 http://ideone.com/d8h2v7 12/15 11:16
CrystalNik: 原來如此 感謝 12/15 11:25
shadow0326: 置底第五誡 12/15 11:43
stupid0319: stack在程式結束前永遠存在呀XD 12/15 12:01
chchwy: 還沒被覆蓋的記憶體垃圾 隨機當的禍根 12/15 13:11
james732: 房租到期只是剛好還沒有別的房客住進去 12/15 13:30
exeex: 第一次可以 跑第二次就很有可能被蓋掉 然後當掉 12/15 15:29
stupid0319: 其實這個技巧在一些地方也有用到,像是遊戲機破解 12/15 15:45
stupid0319: 透過更改stack,含數在return時就會跑到別的程式碼 12/15 15:46