クラスのデストラクタ内でクラス属性を削除する際に問題があります。従来の手続き型プログラムで同じことを実行しようとすると、完全に機能します。
しかし、以下のコードを実行しようとすると、デストラクタはdelete
「配列」せず、メモリを解放しません:
class MyClass
{
private:
int *array;
int n = 2000000;
public:
MyClass(){
this->array = new int[n];
for(int i=0; i<n; i++){
array[i] = i;
}
}
~MyClass(){
delete[] array;
}
};
int main(int argc, const char * argv[])
{
MyClass *test = new MyClass;
delete test;
return 0;
}
なんで?