これがプログラムです...
class CopyCon
{
public:
char *name;
CopyCon()
{
name = new char;
}
CopyCon(const CopyCon &objCopyCon)
{
name = new char;
_tcscpy(name,objCopyCon.name);
}
~CopyCon()
{
if( name != NULL )
{
delete name;
name = NULL;
}
}
};
int main()
{
CopyCon objCopyCon1;
objCopyCon1.name = "Hai";
CopyCon objCopyCon2(objCopyCon1);
objCopyCon1.name = "Hello";
cout<<objCopyCon2.name<<endl;
return 0;
}
コードの実行が完了すると、デストラクタが呼び出されると、「delete」でクラッシュして...
デバッグエラー!
プログラム:..。
検出されたヒープ破損:0x00366990の通常ブロック(#124)の後。CRTは、ヒープバッファの終了後にアプリケーションがメモリに書き込んだことを検出しました。
(アプリケーションをデバッグするには、[再試行]を押します)
デストラクタのヒープメモリをクリアする必要はありません。このプログラムの何が問題になっていますか?誰か助けてください!コピーコンストラクターは、意図したとおりに完全に機能します。それでも... !?