修复第三方C库中发生的内存泄漏问题

时间:2015-07-14 21:22:37

标签: ios objective-c xcode

我使用带接口的第三方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

有没有办法可以清理这个泄露的记忆?

另外,我没有源代码意味着我无法构建库泄漏内存

1 个答案:

答案 0 :(得分:0)

简而言之,如果库中存在真正的泄漏,则必须在该库本身内进行解析。您通常无法自行解决此问题。例外是一个旧的C库,它分配内存并假设您在完成内存后释放内存。但是,您通常不会在Objective-C或Swift库中看到这种行为。

话虽如此,您可能希望确保正确使用库。例如,我们经常看到人们使用SQLite库并发布泄漏的代码,因为他们未能调用适当的清理方法(例如,如果您调用sqlite3_prepare_v2但从不调用sqlite3_finalize,则可能泄漏)。

我可能会建议查看该库的API(因为它们可能具有释放内存的功能)。一个函数为内部使用分配一些内存并不常见,但只有当你调用一些相应的"清理"时才会释放它。功能

如果这个库是一个成熟的,常用的C库,请共享有关库的信息,我们可能会指出正确的方向。如果它是一个不太成熟或不常见的库,那么你可能会有更好的运气直接与提供该库的第三方交谈。