macos - WebRTC捕获NSCursor图像导致内存泄漏

标签 macos memory-leaks webrtc

当我使用 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

最佳答案

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

关于macos - WebRTC捕获NSCursor图像导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61906394/

相关文章:

c++ - 如何在 CLion 中设置 -v 编译器选项并查看相应结果

cocoa - 在Mac应用程序中单击一次即可获取tableView的行号

c++ - 这会导致 C++ 中的内存泄漏吗?

ios - 通过 WebRTC 将屏幕截图作为来自 iOS 的视频流进行流式传输

javascript - 使用 Web Audio API 播放录制的音频 block

ios - 架构 armv7 (WebRTC) 的 undefined symbol

macos - shell 脚本 : remove first column from txt files

c++ - 是否可以在 Mac OS X 上使用 mmap() 避免磁盘使用?

ipad - 带有许多 UIImageViews 的 UIScrollView - 内存管理

javascript - 清理内存泄漏