【问题标题】:C++ object heap allocated and member variableC++ 对象堆分配和成员变量
【发布时间】:2012-11-24 13:07:57
【问题描述】:
class OtherClass
{
    ...
};

class Test
{
    OtherClass otherClass;
};

int main()
{
    Test *pTest = new Test;
}

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

【问题讨论】:

标签: c++ memory heap-memory stack-memory


【解决方案1】:
Test *pTest = new Test;

在Freestore(Heap)上创建一个Test对象,Test的所有成员也在同一个上面。
所以是的。

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

【讨论】:

  • 如果是:OtherClass *pOtherClass = new OtherClass;
  • @user1365914:一旦你使用new,这个对象就会在freestore上创建,并且你的指针会指向它。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-09
    • 2018-01-06
    • 1970-01-01
    • 2016-09-02
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多