【发布时间】:2026-02-19 13:45:02
【问题描述】:
我正在尝试删除子类的对象。虽然我使用了虚拟析构函数,但仍然收到错误消息:
malloc: *** error for object 0x7ffee08bab50: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
我的代码是:
#include <iostream>
using namespace std;
class Animal{
protected:
int age;
public:
Animal(){
age = 0;
cout << "ctor Animal" << endl;
}
virtual ~Animal(){
cout << "dtor Animal" << endl;
}
};
class Mammal : public Animal{
public:
Mammal(){
age = 0;
cout << "ctor Mammal" << endl;
}
~Mammal(){
cout << "dtor Mammal" << endl;
}
};
int main(){
Mammal *dog = new Mammal();
delete &dog;
}
如果有人帮助我,我将非常感激!
【问题讨论】:
-
你应该
delete dog;。 -
投票关闭,因为简单的错字。
-
欢迎来到本站!查看tour 和how-to-ask page 了解更多关于提出问题以吸引高质量答案的信息。如果评论者询问,您可以edit your question 提供更多信息。如果您的问题确实解决了,请不要担心 - 这不是个人问题 :)。
标签: c++ virtual destructor