这只是出于好奇,因为除了最基本的用途外,我没有在 c++ 中使用过new和。delete
我知道这delete会释放内存。我想知道的是它如何处理更复杂的情况?
例如,如果我有一个这样的用户定义类:
class MyClass
{
public:
MyClass();
~MyClass()
{
delete [] intArray;
}
//public members here
private:
int* intArray;
};
假设该类以某种方式为 分配内存intArray,然后在析构函数中释放它,如果我像这样使用该类会怎样:MyClass* myClass = new MyClass();并稍后释放它delete myclass;
如何delete处理所有内存的释放?是否首先调用类析构函数来释放类分配的所有内存(即int* intArray),然后释放分配给类的内存?
如果我有这样的课怎么办:
class MyClass
{
public:
MyClass();
~MyClass()
{
delete anotherMyClass;
}
//public members here
private:
MyClass* anotherMyClass;
};
假设anotherMyClass没有分配构造函数,这会很快耗尽内存,如果有一个 MyClasses 链像链表一样相互连接怎么办?在这种情况下,析构函数中的删除语句会起作用吗?当析构函数被调用时,每个都会anotherMyClass被递归释放吗?
您所知道的newand语句是否有任何特定的奇怪技巧或警告?delete