我应该释放cStringUsingEncoding返回的字符串吗?



如果我调用[NSString cStringUsingEncoding:],我应该在使用它完后free()它吗?

不,文档说得很清楚:

返回的 C 字符串保证仅在释放接收器或清空当前自动释放池(以先发生者为准)之前有效。您应该复制 C 字符串,或者如果它需要在此时间之后存储 C 字符串,则应使用 getCString:maxLength:encoding:

我认为cStringUsingEncoding 正在为转换后的字符串分配内存到指定的编码 因此,如果您不使用自动释放池,则永远不会释放此内存。

最新更新