当我使用 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];
最佳答案
当我有 C++
项目并且它包含 Objective-C
代码时,我遇到了类似的问题。要解决问题,我需要添加 @autoreleasepool
关于macos - WebRTC捕获NSCursor图像导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61906394/