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
(不是指针!)的数据成员,它是分配给classTest
对象的内存的一部分,因此它将位于Test
对象所在的任何位置
也许您不应该命名非指针
pDataMember
?这让人困惑。如果它是:OtherClass*pOtherClass=new OtherClass@user1365914:一旦您使用new
,该对象将在freestore上创建,并且您的指针将指向它。
Test *pTest = new Test;