#include <iostream>
using namespace std;class Resource {
public:Resource() { cout << "Resource constructed" << endl; }~Resource() { cout << "Resource destructed" << endl; }
};int main() {// 动态分配一个包含3个 Resource 对象的数组Resource* resources = new Resource[3];// 使用 delete[] 正确释放资源delete[] resources;return 0;
}
当你new一个数组时候,系统除了会给你的数组分配一定的内存空间,还会为每个数组的对象调用构造函数,若你只detele,那么可能会造成资源没释放的问题,对于new的数组,要用delete[]掉。虚析构是当你基类指针删除派生类对象时,class A{virtual ~A(); };
class B : public A{}; A * b = new B(); delete b; 若基类不是虚析构,那么delete时只能调用基类的析构函数,不会调用派生类的析构函数,可能会造成内存泄漏问题。