2

以下のコードで、実行時に「Debug Assertion Failed」というエラーが発生します。MVC++ 2010 でコードをコンパイルしました。デバッグ モードでエラー ウィンドウの [再試行] をクリックすると、次の行の dbgdel.cpp ファイルに移動します。

_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));

行にコメントすると

delete result;

コードでは、エラーが消えます...

問題を理解するためにあなたの助けをいただければ幸いです。ポインターの結果を削除する必要があります。 new を使用して clone メソッドで作成します (コード全体を投稿できず、サイズが大きすぎます)。

ご協力いただきありがとうございます

/***CODE****/



########

File: DrawShapeBase.cpp 
...
...

Base* DrawShapeBase::SetOutput(Base* data)
{
   return (data->clone());
}


....
Base* DrawShapeBase::Draw(Base* data){
    Base* result = setOutput(data); 
        ...
    ...
    return result; 

}

/*##############*/
File: Derived.cpp

...
...

Base* Derived::clone()
{
    Base* b = new Derived(*this);
    return b;
}

...
...

/*##############*/
File Base.h
public:

    Base();
    virtual ~Base();
    virtual Base* clone(void) = 0;
....


/*##############*/
main.cpp 


...
...
Base* data = new Derived();
DrawBase* dr = new DrawShapeBase();
Base* result = dr->Draw(data);

delete data;
delete result;
delete dr; 
...
4

0 に答える 0