当对象不使用 new 关键字但父对象在堆中时,对象是否存储在堆栈或堆中

Do objects iniside objects get stored in the stack or heap when it does not use the new keyword but the parent object is in the heap?

本文关键字:对象 存储 堆栈 是否 new 关键字      更新时间:2023-10-16

基本上,如果我有类A,类A在不使用new的情况下保存类B的实例,并且我使用new创建类A的实例。类A内的类B实例是否存储在堆栈或堆中?

BA的一部分。因此,无论A存储在何处(无论是堆栈、堆还是其他什么),也就是说,根据定义,存储B的位置。

使用 new 关键字时,会在堆上创建一个对象。如果没有 new 关键字,它将在堆栈上创建。

详细地说,类 A 的对象是使用 new 关键字创建的,该关键字返回指针。类 A 的对象在堆上创建,指向它的指针在堆栈上。现在,在类 A 的对象中,您正在创建类 B 的对象,而不使用 new 关键字。如果类 B 的对象位于函数内部,则它存储在堆栈中。否则,如果对象 B 是在类范围内声明的,那么它将在堆上。