我有最奇怪的内存泄漏,我不知道为什么。我有一个抽象类如下:
class ClassA
{
public:
virtual ~ ClassA (){}
virtual void notify(ClassB*) = 0;
virtual void add(ClassB*) = 0;
};
class ClassC : public ClassA
{
public:
void notify(ClassB*)
{
//some cout statements
}
void add(ClassB*)
{
//some cout statements
}
};
int main()
{
ClassA *f = new ClassC();
delete f;
}
现在,当我编译代码并运行 Valgrind 时,它没有泄漏。但是,当我删除 ClassA 析构函数(或使其成为非虚拟析构函数)时,Valgrind 报告 32 字节作为肯定丢失的内存。我不知道为什么会发生这种情况,因为我的析构函数什么都不做,也没有成员变量。有任何想法吗?
编辑:我已经用 g++ 在 Ubuntu 64bit 中编译