1

所以我得到了 A 类和 B 类,其中 A 类是 B 类的基类。但是当我做这样的事情时:

int main()
{
   B der(222);
   A* test;
   test = &der;
   delete test;
}

我收到一个错误:

debug assertion failed!

program:.......
line 52 

Expression:_BLOCK_TYPE_IS_VALID(pHead0>nBlockUse)

任何想法?

4

2 回答 2

3

您不能调用delete未手动为其分配内存的变量。

于 2013-02-25T04:21:50.877 回答
2

在您的代码der中不是动态分配的对象。即,它不是使用分配的new。所以你不应该delete在那个对象上使用。der一旦超出范围,对象将被自动销毁。如果你想使用delete,那么你应该使用创建对象new

A * test = new B(222);
delete test;
于 2013-02-25T04:26:16.280 回答