関数の戻り値がオブジェクトである場合のC++の動作をテストしたかったのです。この小さな例を作成して、割り当てられたバイト数を監視し、コンパイラがオブジェクトのコピーを作成するか(オブジェクトがパラメータとして渡される場合など)、代わりに何らかの参照を返すかどうかを判断しました。
しかし、この非常に単純なプログラムを実行できなかったため、理由がわかりません。エラーの内容:dbgdel.cppファイルの「デバッグアサーションに失敗しました!式:BLOCK_TYPE_IS_INVALID」。Projectはwin32コンソールアプリケーションです。しかし、私はこのコードに何か問題があると確信しています。
class Ctest1
{
public:
Ctest1(void);
~Ctest1(void);
char* classSpace;
};
Ctest1::Ctest1(void)
{
classSpace = new char[100];
}
Ctest1::~Ctest1(void)
{
delete [] classSpace;
}
Ctest1 Function(Ctest1* cPtr){
return *cPtr;
}
int _tmain(int argc, _TCHAR* argv[])
{
Ctest1* cPtr;
cPtr=new Ctest1();
for(int i=1;i<10;i++)
*cPtr = Function(cPtr);
delete cPtr;
return 0;
}