VisualStudio2010中指针向量内存泄漏 我有一个简单的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 ); };

VisualStudio2010中指针向量内存泄漏 我有一个简单的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 ); };,c++,visual-studio-2010,mfc,C++,Visual Studio 2010,Mfc,在另一个类中,作为_处理程序,我有: // .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+

在另一个类中,作为_处理程序,我有:

// .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();
}
大用户实际上对myHandler除了创建它之外什么都不做。 现在,我正在使用Visual Studio 2010 MFC对话项目,因此,在主对话类中,我有:

class MainDlg {
  private:
    BigUser foo;
}
这会导致内存泄漏。我已经对所有代码进行了反向注释,导致泄漏的指令是:

A_Handler::A_Handler()
{
  // ...
  myAs.reserve( 50 );
  // ...
}

我做错了什么?

“我做错了什么”-不使用智能指针我看不到任何明显的泄漏,但是:
for(int I=0;泄漏在别处。
reserve()
不会泄漏。在显示的代码中,任何地方都不能直接使用
new
。您的代码存在其他错误,但没有明显的内存泄漏。@不使用智能指针没有错。您的代码有未定义的行为,尤其是析构函数
A_Handler::A_Handler()
{
  // ...
  myAs.reserve( 50 );
  // ...
}