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)
在对象上释放所有内存(包括数组)?或者我需要做一些特别的事情吗?
是的,你做得很好。对象的所有内存都将被释放。
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:需要额外的复制构造函数和复制赋值运算符以使其遵循三法则。