最も奇妙なメモリリークがあり、その理由がわかりません。次のような抽象クラスがあります。
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 64 ビットでコンパイルしました