gloox 1.0 内存泄露问题

3466阅读 7评论2012-12-13 sxcong
分类:C/C++

使用vc2008调用gloox测试example,发现有内存泄露。跟踪发现出在Client里面:

void Client::init()
  {
    m_rosterManager = new RosterManager( this );
    m_disco->setIdentity( "client", "bot" );
    registerStanzaExtension( new ResourceBind( 0 ) );
    registerStanzaExtension( new Capabilities() );
    m_presenceExtensions.push_back( new Capabilities( m_disco ) );//这一行引起的
  }
最后跟踪,的确没看到在哪里释放它。
手动在析构函数里加上:
Client::~Client()
  {
 StanzaExtensionList::const_iterator it = m_presenceExtensions.begin();
 for( ; it != m_presenceExtensions.end(); ++it )
 {
 delete (*it);
 }
 m_presenceExtensions.clear();
 delete m_rosterManager;
 delete m_auth;
  }

内存泄露消失了。
不过,以gloox这么庞大的用户群体,如果问题这么明显,肯定早就发现了。只能推测可能由系统,SDK或其他开发环境引起的(当前环境是XP+vc2008,不过系统中安装了众多其他开发工具)。gloox已经好久没有更新了,可能以后还会碰到,暂记备用。
上一篇:gloox 1.0 编译问题解决
下一篇:MyJingle的使用经验

文章评论