【问题标题】:Destroying a member object销毁成员对象
【发布时间】:2013-07-13 02:52:12
【问题描述】:

我想释放类中定义的对象的内存

class A
{
     A() {} //Constructor
    //Other Definitions go here
}

Class B
{
   B(){} //Constructor
   ~B()
{
   //what should I do to release the memory location of A's object
   //Shall I call default destructor of A 
}
private:
A objA;
}

【问题讨论】:

  • 什么都不做是最好的。
  • A的析构函数会被自动调用。
  • 您的代码中没有任何派生类。
  • 没有基类 - 你包含一个类
  • @Euler,相信我们,如果你触及任何关于 objA 的破坏,你的代码会在你说出来之前获得未定义的行为。

标签: c++ css memory-management destructor


【解决方案1】:

你不需要做任何事情来释放objA在类B中占用的内存。当B对象的内存被释放时,内存会自动释放。

在不破坏包含objAB 对象的情况下,您无法释放B 类中objA 占用的内存。

您可以显式调用objA 的析构函数,但这不会释放任何内存。当您之后访问objA 时,它只会导致未定义的行为。而且很可能objA之后会被访问,因为当C++运行时销毁B对象时,它会调用objA的析构函数。

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多