Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果我打电话[NSString cStringUsingEncoding:],我应该free()在我用完后打电话吗?
[NSString cStringUsingEncoding:]
free()
不,文档说得很清楚:
保证返回的 C 字符串仅在接收器被释放或当前自动释放池被清空之前有效,以先发生者为准。您应该复制 C 字符串,或者getCString:maxLength:encoding:如果需要在此时间之后存储 C 字符串,请使用。
getCString:maxLength:encoding:
我认为 cStringUsingEncoding 正在为转换后的字符串分配内存以指定编码因此,如果您不使用自动释放池,则永远不会释放此内存。