VLD обнаружила утечку памяти в следующих кодах:
typedef Poco::SharedPtr<double> DoublePtr;
class A {
public:
DoublePtr a;
};
class B:public A {
public:
DoublePtr b;
};
class C : public B
{
public:
DoublePtr c;
};
typedef Poco::SharedPtr<A> APtr;
typedef Poco::SharedPtr<B> BPtr;
typedef Poco::SharedPtr<C> CPtr;
class Test {
public:
Test() {
CPtr c1 = new C();
a_list.push_back(c1);
}
std::list<APtr> a_list;
};
int main(int argc, char *argv[])
{
Test test;
}
Но это нормально при использовании std::shared_ptr или boost::shared_ptr. И если я добавлю 'виртуальный ~A(){}', Poco::SharedPtr тоже подойдет!
Ошибка Poco::SharedPtr??