删除变量时出现奇怪的错误

时间:2013-02-25 04:19:18

标签: c++

所以我得到了一个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)

任何想法?

2 个答案:

答案 0 :(得分:3)

您无法在未手动为其分配内存的变量上调用delete

答案 1 :(得分:2)

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

创建对象
A * test = new B(222);
delete test;