Я хотел проверить, как C++ ведет себя, когда возвращаемое значение функции является объектом. Я сделал этот небольшой пример, чтобы посмотреть, сколько байтов выделено, и определить, делает ли компилятор копию объекта (например, когда объект передается в качестве параметра) или вместо этого возвращает какую-то ссылку.
Однако мне не удалось запустить эту очень простую программу, и я понятия не имею, почему. Ошибка говорит: «Ошибка утверждения отладки! Выражение: BLOCK_TYPE_IS_INVALID» в каком-то файле dbgdel.cpp. Проект представляет собой консольное приложение 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;
}