作者CrystalNik (水晶尼克)
看板C_and_CPP
標題[問題] C++ stack中的記憶體管理問題
時間Tue Dec 15 11:05:28 2015
放在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
→ 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