繁体   English   中英

在堆上创建 object 时在哪里创建成员变量?

[英]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;

谢谢。

itsageCat的子对象,这意味着它是Cat object 本身的一部分。 因此,它作为堆分配的Cat object 的一部分存在。 new Cat创建Cat object 和任何子对象,所有这些都在同一个分配中。

如果它是一个指针,这仍然是正确的。 指针值将是Cat object 的一部分,但它可以指向其他地方的int

请注意,C++ 标准不使用术语“堆栈”和“堆”。 Function 局部变量(非静态)具有自动存储期限,使用new T创建的对象具有动态存储期限。 在后台,具有这些存储持续时间的值通常分别使用堆栈和堆来实现,但使用堆栈或堆结构不需要符合要求的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM