Объект C++ как возвращаемое значение: копирование или ссылка?

Я хотел проверить, как 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;
   }
10
задан Chad 23 June 2015 в 20:57
поделиться