在C ++中删除[]的机制是什么?

时间:2013-05-13 14:11:33

标签: c++ memory-management

请看下面的程序:

#include <iostream>;

using namespace std;

class T 
{
public:
    int a;
    T() {a = 10; cout << "constructor" << endl;}
    ~T() {cout << "destructor" << endl;}
};


int main()
{
    T * ptr1 = new T;
    cout << hex << ptr1 << endl;
    delete ptr1;
    cout << "=======" << endl;

    T * ptr2 = new T[3];
    cout << hex << ptr2 << endl;
    delete [] ptr2;

    return 0;
}

我真的很困惑,delete [] ptr2怎么知道T中有三个元素并释放所有这三个元素的内存,我认为ptr2只保存第一个元素的地址。 delete[]的机制是什么,ptr2是否包含其他一些信息,例如分配元素的大小?

0 个答案:

没有答案