【发布时间】:2026-01-07 17:25:02
【问题描述】:
考虑以下代码:
class Base1 { public: int a1; };
class Base2 { public: int a2; };
class Foo: public Base1, public Base2 {}
int main() {
Foo *foo = new Foo();
Base2 *b = foo;
delete b; // note pointer foo != pointer b
}
delete 如何知道应该释放的内存从哪里开始?
由于所有类都只包含原子整数,在这种特殊情况下是否需要虚拟析构函数?
【问题讨论】:
-
只将
new返回的指针(或空指针)传递给delete。否则你有未定义的行为。 -
我的机器崩溃了。
标签: c++