1

我正在努力在程序中安装一些网络共享。URL 和用户名保存在字典中,密码来自钥匙串,钥匙串更改为 NSString,使用和释放。我已经追踪到服务器实际安装的唯一内存泄漏:

    error = FSMountServerVolumeSync((CFURLRef) [objects objectForKey:@"url"], NULL, (CFStringRef) [objects objectForKey:@"username"],(CFStringRef) password, NULL, 0);

“url”的对象是一个 NSURL,用户名是一个 NSString。

在泄漏性能工具中它说:Leaked Object: NSCFString responsable library: smb, responsable frame: smb_url_to_dictionary

如果我查看历史记录,它是一个 32 字节的 CFString malloc,然后经过 8 次来自 smb 和 NetFS 库的 CFRetain-CFRelease 迭代,导致 +1 保留计数。

作为 Objective-C 和内存管理的新手,我认为我所做的一切都是正确的,我已经发布了所有已分配的内容,并且真的不确定这种泄漏是如何发生的。

FSMountServerVolumeSync 是否存在导致此泄漏的棘手问题?

有什么方法可以在运行时查看内存位置以确定泄漏的来源?

另外,NSCF 代表什么?

谢谢您的帮助

4

0 回答 0