【发布时间】:2014-06-11 07:56:49
【问题描述】:
如何在 iOS 7 中删除由 const char* arrayname 分配的内存。 这是我的代码
const char *bytes = [encodedString UTF8String];
现在我想在启用 ARC 的情况下发布 bytes。我该怎么做。
【问题讨论】:
标签: objective-c ios7 memory-leaks char constants
如何在 iOS 7 中删除由 const char* arrayname 分配的内存。 这是我的代码
const char *bytes = [encodedString UTF8String];
现在我想在启用 ARC 的情况下发布 bytes。我该怎么做。
【问题讨论】:
标签: objective-c ios7 memory-leaks char constants
您不需要做任何事情来确保它最终会被释放。引用the documentation:
返回的 C 字符串是指向字符串对象内部结构的指针,它的生命周期可能比字符串对象的生命周期短,而且肯定不会有更长的生命周期。因此,如果需要将 C 字符串存储在调用此方法的内存上下文之外,则应将其复制。
换句话说,你不知道数组的生命周期,但你知道它可能不会活多久,它会被自动释放。
【讨论】:
你不应该直接释放bytes指针指向的内存,因为它是由encodedString对象管理的。要释放该内存,请摆脱对编码字符串的所有强引用,并且应该释放内存
【讨论】: