可以在iOS上替换malloc吗?

Jam*_*mes 6 cocoa-touch objective-c ios

我想在iOS应用程序中使用自定义mallocfree一些分配,包括像类这样的类NSMutableData.

  • 这可能吗?
  • 如果是这样,我该怎么办?

我真正喜欢做的是在我使用它之后将某些数据归零,以便尽可能地保证前向安全性(如果设备丢失或被盗).如果有一个更简单的方法来做到这一点,不涉及替换,malloc那就太好了.

我认为我需要更换malloc才能这样做,因为敏感数据存储在钥匙串中 - 我除了使用之外别无选择NSDictionary,NSString并且NSData为了访问这些数据(我甚至无法使用mutable)版本).

Nik*_*uhe 5

您可以在敏感对象上使用自定义分配器,而不是覆盖通用内存管理功能.

keychain服务API是用C语言编写的,它使用Core Foundation对象,如CFDictionary,CFData和CFString.虽然这些对象是"免费的"桥接到他们的Objective-C对应物并且通常可以互换,但它们具有Objective-C无法提供的一些功能.其中一个功能是使用自定义分配器.

CFDictionaryCreate例如,接受一个类型的参数CFAllocatorRef,反过来,可以使用CFAllocatorCreate.分配器保存指向分配和释放等功能的指针.您可以使用自定义函数覆盖敏感数据.