【发布时间】:2016-03-06 23:48:11
【问题描述】:
我专门使用 c++: 当我在函数中创建一个对象时,这个对象是保存在栈上还是堆上?
我问的原因是因为我需要保存指向对象的指针,并且可以创建对象的唯一位置是在函数内,所以如果我有一个指向该对象的指针并且方法完成,则指针可能是后指着垃圾。 --> 如果我将一个指向对象的指针添加到一个列表(它是该类的成员),然后方法完成,我可能会让列表中的元素指向垃圾。
再次如此 - 当在方法中创建对象时,它是保存在堆栈中(函数结束后它将无关紧要)还是保存在堆中(因此我可以指向它而不会引起任何问题..)?
示例:
class blah{
private:
list<*blee> b;
public:
void addBlee() {
blee b;
blee* bp = &b;
list.push_front(bp);
}
}
你可以忽略语法问题——以上只是为了理解概念和困境...
谢谢大家!
【问题讨论】:
标签: c++ object pointers heap-memory stack-memory