[问题] 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