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

作者: CrystalNik (水晶尼克)   2015-12-15 11:05:28
放在stack中的物件
不是在block結束或函數結束時會回收記憶體嗎?
舉個例子 一個普通函數:
vector<int> *method(){
vector<int> v = {1,2,3};
vector<int> *p = &v;
return p;
}
v物件的生命週期不是只到此函數結束?
但我在主程式
auto p = method();
之後還是可以透過p指標來操作v
表示v還存在?
請問為何會這樣呢?
作者: Caesar08 (Caesar)   2015-12-15 11:16:00
是,那只是碰巧可以罷了 http://ideone.com/d8h2v7
作者: CrystalNik (水晶尼克)   2015-12-15 11:25:00
原來如此 感謝
作者: shadow0326 (非議)   2015-12-15 11:43:00
置底第五誡
作者: stupid0319 (徵女友)   2015-12-15 12:01:00
stack在程式結束前永遠存在呀XD
作者: chchwy (mat)   2015-12-15 13:11:00
還沒被覆蓋的記憶體垃圾 隨機當的禍根
作者: james732 (好人超)   2015-12-15 13:30:00
房租到期只是剛好還沒有別的房客住進去
作者: exeex (執行檔EX)   2015-12-15 15:29:00
第一次可以 跑第二次就很有可能被蓋掉 然後當掉
作者: stupid0319 (徵女友)   2015-12-15 15:45:00
其實這個技巧在一些地方也有用到,像是遊戲機破解透過更改stack,含數在return時就會跑到別的程式碼

Links booklink

Contact Us: admin [ a t ] ucptt.com