[英]Where is local variable of member function created if object is created via new?
[英]Where does member variable get created when object is created on heap?
我对 memory 分配有点困惑。 当 object 在堆上创建时,成员变量在哪里创建(在堆栈上还是在堆上?)? 例如,假设我们有 class Cat,如下所示。
class Cat { public: int itsage;};
现在假设我们在主 function 中有以下代码行。
Cat * Frisky= new Cat;
现在我猜这里指针变量 Frisky 是在堆栈上创建的,它在堆上存储 memory 的 memory 地址(对吗?)。 但我很困惑 integer 变量 itsage 是在哪里创建的? 如果 itsage 本身是指针会发生什么? 即int * itsage;
谢谢。
itsage
是Cat
的子对象,这意味着它是Cat
object 本身的一部分。 因此,它作为堆分配的Cat
object 的一部分存在。 new Cat
创建Cat
object 和任何子对象,所有这些都在同一个分配中。
如果它是一个指针,这仍然是正确的。 指针值将是Cat
object 的一部分,但它可以指向其他地方的int
。
请注意,C++ 标准不使用术语“堆栈”和“堆”。 Function 局部变量(非静态)具有自动存储期限,使用new T
创建的对象具有动态存储期限。 在后台,具有这些存储持续时间的值通常分别使用堆栈和堆来实现,但使用堆栈或堆结构不需要符合要求的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.