示例代码中的WebRtc CreatePeerConnectionFactory内存泄漏

时间:2018-12-17 13:30:07

标签: c++ memory-leaks webrtc

使用WebRtc库时遇到一些问题。一切正常,但是随着时间的推移,我发现内存泄漏。通过消除过程,我将问题的主要根源追溯到以下示例,该示例反复运行会导致内存增长,并且永远不会取消分配。

rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> peer_connection_factory_ = webrtc::CreatePeerConnectionFactory(
        nullptr /* network_thread */,
        nullptr /* worker_thread */,
        nullptr /* signaling_thread */,
        nullptr /* default_adm */,
        webrtc::CreateBuiltinAudioEncoderFactory(),
        webrtc::CreateBuiltinAudioDecoderFactory(),
        webrtc::CreateBuiltinVideoEncoderFactory(),
        webrtc::CreateBuiltinVideoDecoderFactory(), 
        nullptr /* audio_mixer */,
        nullptr /* audio_processing */);

    peer_connection_factory_.release();

初始化代码实际上取自未经修改的webrtc示例(see第91行)。我没有做任何不寻常的事情。目前使用的是webrtc的branch-heads / 72版本,据我所知应该稳定。我还看到其他版本的内存在增长,尽管还没有验证是否完全相同。

据我了解,每当清除最后一个引用时,scoped_refptr都应处置并取消分配其资源,这应该发生,因为只有一个副本。我是否误解了它应该如何工作?我也尝试过为编码器/解码器工厂传递nullptr,问题似乎仍然存在。

非常感谢

0 个答案:

没有答案