我想测试当函数的返回值为对象时 C++ 的行为。我做了这个小例子来观察分配了多少字节,并确定编译器是复制对象(比如当对象作为参数传递时)还是返回某种引用。
但是,我无法运行这个非常简单的程序,我也不知道为什么。错误说:“调试断言失败!表达式:BLOCK_TYPE_IS_INVALID”在某些 dbgdel.cpp 文件中。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;
}