0

我有一个关于 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 );
  // ...
}

我究竟做错了什么?

4

0 回答 0