我使用带接口的第三方C库
third_party_C_func(const char*)
我将此功能用作
NSString *content = @"";
const char *cstr = [content cStringUsingEncoding:NSUTF8StringEncoding]);
third_party_C_func(cstr);
现在Xcode内存泄漏检测显示内部 third_party_C_func
malloc
有没有办法可以清理这个泄露的记忆?
另外,我没有源代码意味着我无法构建库泄漏内存
答案 0 :(得分:0)
简而言之,如果库中存在真正的泄漏,则必须在该库本身内进行解析。您通常无法自行解决此问题。例外是一个旧的C库,它分配内存并假设您在完成内存后释放内存。但是,您通常不会在Objective-C或Swift库中看到这种行为。
话虽如此,您可能希望确保正确使用库。例如,我们经常看到人们使用SQLite库并发布泄漏的代码,因为他们未能调用适当的清理方法(例如,如果您调用sqlite3_prepare_v2
但从不调用sqlite3_finalize
,则可能泄漏)。
我可能会建议查看该库的API(因为它们可能具有释放内存的功能)。一个函数为内部使用分配一些内存并不常见,但只有当你调用一些相应的"清理"时才会释放它。功能
如果这个库是一个成熟的,常用的C库,请共享有关库的信息,我们可能会指出正确的方向。如果它是一个不太成熟或不常见的库,那么你可能会有更好的运气直接与提供该库的第三方交谈。