以下のプログラムを見てください。
#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;
}
T に 3 つの要素があり、これら 3 つの要素のメモリをすべて解放する方法を知り、最初の要素のアドレスしか保持していないdelete [] ptr2
と思います。ptr2
のメカニズムは何ですか?割り当てられた要素のサイズなど、他の情報を保持してdelete[]
いますか?ptr2