【问题标题】:NSCursor memory leak (currentSystemCursor)NSCursor 内存泄漏(currentSystemCursor)
【发布时间】:2017-06-18 07:43:37
【问题描述】:

我现在面临一个奇怪的问题。在我的程序中的某个时刻,我在 OSX 中捕获系统的鼠标光标。为此,我这样做:

NSCursor *cursor = [NSCursor currentSystemCursor];

我已经删除了与光标一起测试问题的所有其他内容。但是这个单一的调用给了我一个巨大的内存泄漏(光标每秒被捕获多次)。它大约有 50MB/s 的内存泄漏。

我必须以某种方式释放光标吗?根据文档 (https://developer.apple.com/reference/appkit/nscursor/1533611-currentsystemcursor?language=objc),如果我理解正确,currentSystemCursor 会给我一份系统光标的副本。但它没有说明我是否需要释放内存。

目前我的程序不使用 ARC。

【问题讨论】:

  • 你是怎么发现这个漏洞的?您是否尝试过 Xcode 中的内存图视图来查看?你能给我们一个展示泄漏的最小代码示例吗?您的程序是否以任何方式使用线程?还是您正在运行循环以重复捕获光标?

标签: objective-c macos memory-leaks


【解决方案1】:

我现在已经找到了问题。问题是光标在使用pthread 库创建的不同线程上被抓取。我已经在线程上实现了一个自动释放池,内存泄漏现在已经消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2013-01-20
    • 2011-10-31
    • 2019-08-10
    • 2013-06-24
    • 2011-03-22
    相关资源
    最近更新 更多