我有一个关于 C++ 的简单问题。我有一个对象,比如说 A,类似于:
class A{
private:
int a, b, c;
std::wstring d, e, f;
public:
A();
A( const A &src );
A( const enumLikeA eA );
void operator =( const A &src );
};
在另一个类 A_Handler 中,我有:
// .h
class A_Handler{
private:
std::vector<A *> myAs;
public:
A_Handler();
};
// .cpp
A_Handler::A_Handler()
{
A *pAs;
myAs.reserve( 50 );
}
A_Handler::~A_Handler()
{
for( int i=0; i<myAs.capacity(); i++ )
delete myAs[i];
myAs.clear();
}
最后:
class BigUser {
private:
A_Handler myHandler;
};
除了创建它之外,大用户实际上对 myHandler 什么都不做。现在,我正在使用 Visual Studio 2010 MFC 对话框项目,因此,在主对话框类中,我有:
class MainDlg {
private:
BigUser foo;
}
这会导致内存泄漏。我已经向后评论了所有代码,似乎导致泄漏的指令是:
A_Handler::A_Handler()
{
// ...
myAs.reserve( 50 );
// ...
}
我究竟做错了什么?