动态分配对象C++

Cat*_*a45 5 c++ memory arrays dynamic object

嘿大家我得到了一个简短的问题.我正在回到C++并且想知道这个

如果我有动态分配的对象:

MyObject* obj = new MyObject();
Run Code Online (Sandbox Code Playgroud)

并且它内部有一个数组作为成员:

class MyObject 
{
public:
   MyObject();
   ~MyObject();
   float array[16];
   private:
};
Run Code Online (Sandbox Code Playgroud)

将只是正常删除:

delete obj;
Run Code Online (Sandbox Code Playgroud)

在对象上释放所有内存(包括数组)?或者我需要做一些特别的事情吗?

her*_*tao 3

是的,你做得很好。对象的所有内存都将被释放。

ps: 如果你也在类内部动态创建内存,你应该在析构函数中释放它们的内存~MyObject()

例如:

class MyObject
{
public:
    /** Constructor */
    MyObject() : test(new int[100]) {}
    /** Destructor */
    ~MyObject() { delete []test; };  // release memory in destructor 
    /** Copy Constructor */
    MyObject(const MyObject &other) : test(new int[100]){
        memcpy(test, other.test, 100*sizeof(int));
    }
    /** Copy Assignment Operator */
    MyObject& operator= (MyObject other){
        memcpy(test, other.test, 100 * sizeof(int));
        return *this;
    }

private:
    int *test;
};
Run Code Online (Sandbox Code Playgroud)

ps2:需要额外的复制构造函数和复制赋值运算符以使其遵循三法则