デストラクタが呼び出されるたびに、奇妙なメッセージが表示されました。私のプライベート変数の1つは動的に割り当てられた配列(int *member;
)であるため、次のようにデストラクタを記述します。
ClassSet::~ClassSet(){delete []member;}
のデストラクタClassSet
が呼び出されるたびに、エラーメッセージが表示されます。
WindowsがHw1.exeでブレークポイントをトリガーしました。
これは、ヒープの破損が原因である可能性があります。これは、Hw1.exeまたはロードされたDLLのいずれかにバグがあることを示しています。
これは、Hw1.exeにフォーカスがあるときにユーザーがF12キーを押したことが原因である可能性もあります。
クラス全体:
class ClassSet
{
public:
ClassSet(int n = DEFAULT_MAX_ITEMS);
ClassSet(const ClassSet& other);
ClassSet &operator=(const ClassSet& other);
~ClassSet();
private:
int size;
int *member;
};
ClassSet::ClassSet(int n){
size = n;
member = new int[n];
}
ClassSet::ClassSet(const ClassSet& other){
int i = 0;
this->size = other.size;
member = new int [capacity];
while (i<size)
{
this->member[i] = other.member[i];
i++;
}
}
Multiset& Multiset::operator=(const Multiset &other)
{
if (&other == this){return *this;}
this->size = other.size;
int i = 0;
delete [] member;
member = new int[size];
while (i<other.size)
{
this->member[i] = other.member[i];
i++;
}
return *this;
}
このデストラクタの何が問題になっているのでしょうか。