所以我得到了一个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)
任何想法?
答案 0 :(得分:3)
您无法在未手动为其分配内存的变量上调用delete
。
答案 1 :(得分:2)
在您的代码中der
不是动态分配的对象。即,它不是使用new
分配的。所以你不应该在那个对象上使用delete
。 der
对象一旦超出范围就会自动销毁。如果您想使用delete
,则应使用new
A * test = new B(222);
delete test;