C++ C++;已分配对象堆和成员变量

C++ C++;已分配对象堆和成员变量,c++,memory,stack,heap,C++,Memory,Stack,Heap,pTest指向类型为Test的对象。otherClass也是在堆上还是在堆栈中分配的 class OtherClass { ... }; class Test { OtherClass otherClass; }; int main() { Test *pTest = new Test; } 在Freestore(堆)上创建一个Test对象,并且Test的所有成员也在同一个堆上。 所以是的 请注意,从技术上讲,该标准从不使用堆或堆栈这两个术语,但您可以假设它们,因为

pTest
指向类型为
Test
的对象。
otherClass
也是在堆上还是在堆栈中分配的

class OtherClass
{
    ...
};

class Test
{
    OtherClass otherClass;
};

int main()
{
    Test *pTest = new Test;
}
在Freestore(堆)上创建一个
Test
对象,并且
Test
的所有成员也在同一个堆上。
所以是的


请注意,从技术上讲,该标准从不使用堆或堆栈这两个术语,但您可以假设它们,因为几乎所有实现都使用它们。

它是在堆上分配的。由于
pDataMember
是类型为
OtherClass
(不是指针!)的数据成员,它是分配给class
Test
对象的内存的一部分,因此它将位于
Test
对象所在的任何位置


也许您不应该命名非指针
pDataMember
?这让人困惑。

如果它是:OtherClass*pOtherClass=new OtherClass@user1365914:一旦您使用
new
,该对象将在freestore上创建,并且您的指针将指向它。
Test *pTest = new Test;