【问题标题】:WebRTC capture NSCursor image cause memory leakWebRTC 捕获 NSCursor 图像导致内存泄漏
【发布时间】:2020-05-20 06:20:37
【问题描述】:

当我使用 WebRTC 的模块桌面捕获来捕获屏幕和鼠标时,我遇到了这个问题。 NSCursor* nscursor = [NSCursor currentSystemCursor]; 我发现这条线会导致内存泄漏。那是一个线程中的循环函数,大概200ms捕获一次。不知道怎么释放内存。

void MouseCursorMonitorMac::CaptureImage(float scale) {  
   NSCursor* nscursor = [NSCursor currentSystemCursor];

   if (nscursor == nil) return;

   NSImage* nsimage = [nscursor image];

   if (nsimage == nil || !nsimage.isValid) {
     return;
   }
   NSSize nssize = [nsimage size];  // DIP size

   // No need to caputre cursor image if it's unchanged since last capture.
   if ([[nsimage TIFFRepresentation] isEqual:[last_cursor_ TIFFRepresentation]]) {
      return;
   }
   last_cursor_ = nsimage;

   /*
    others
   /*
}

闲置图片,我只删除所有没有NSCursor* nscursor = [NSCursor currentSystemCursor];

memory leak example

【问题讨论】:

    标签: macos memory-leaks webrtc


    【解决方案1】:

    当我有 C++ 项目并且它包括 Objective-C 代码时,我遇到了类似的问题。要解决问题,我需要添加 @autoreleasepool

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 2015-07-06
      • 2014-06-07
      • 2013-11-20
      • 2011-10-28
      相关资源
      最近更新 更多