[問題] C++ stack中的記憶體管理問題

看板C_and_CPP作者 (水晶尼克)時間10年前 (2015/12/15 11:05), 編輯推噓6(603)
留言9則, 7人參與, 最新討論串1/1
放在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

12/15 11:16, , 1F
是,那只是碰巧可以罷了 http://ideone.com/d8h2v7
12/15 11:16, 1F

12/15 11:25, , 2F
原來如此 感謝
12/15 11:25, 2F

12/15 11:43, , 3F
置底第五誡
12/15 11:43, 3F

12/15 12:01, , 4F
stack在程式結束前永遠存在呀XD
12/15 12:01, 4F

12/15 13:11, , 5F
還沒被覆蓋的記憶體垃圾 隨機當的禍根
12/15 13:11, 5F

12/15 13:30, , 6F
房租到期只是剛好還沒有別的房客住進去
12/15 13:30, 6F

12/15 15:29, , 7F
第一次可以 跑第二次就很有可能被蓋掉 然後當掉
12/15 15:29, 7F

12/15 15:45, , 8F
其實這個技巧在一些地方也有用到,像是遊戲機破解
12/15 15:45, 8F

12/15 15:46, , 9F
透過更改stack,含數在return時就會跑到別的程式碼
12/15 15:46, 9F
文章代碼(AID): #1MRuDw9N (C_and_CPP)