gpt4 book ai didi

c++ - 将删除与基类指针一起使用会导致内存泄漏吗?

转载 作者:IT老高 更新时间:2023-10-28 22:00:14 26 4
gpt4 key购买 nike

给定两个类只有原始数据类型,没有自定义析构函数/释放器。C++ 规范是否保证它会以正确的大小释放?

struct A { int foo; };
struct B: public A { int bar[100000]; };
A *a = (A*)new B;
delete a;

我想知道我需要写一个空的virtual dtor吗?

我已经尝试过 g++ 和 vc++2008,它们不会导致泄漏。但我想知道 C++ 标准中什么是正确的。

最佳答案

除非基类析构函数是虚拟的,否则它是未定义的行为。见 5.3.5/4:

If the static type of the operand [of the delete operator] is different from its dynamic type, the static type shall be a base class of the operand's dynamic type and the static type shall have a virtual destructor or the behaviour is undefined.

关于c++ - 将删除与基类指针一起使用会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com