内部工作原理是什么?
是否创建C字符串数据的Swift字符串副本?
它是否将其用作参考并以Swift字符串形式返回,因此返回的字符串使用相同的数据?如何运作?
是否将C字符串复制到新分配的Swift字符串中?
如果String(cString: UnsafePointer<Int8>)
确实可以通过将C字符串复制到新分配的swift字符串中而起作用,是否有一种方法可以通过引用现有数据而不是复制它来将C字符串转换为swift?
String(cString: UnsafePointer<Int8>)
的工作原理,以及如何确定它是否复制或是否引用与Swift字符串相同的内存?
初始化器
init(cString:)通过复制由给定指针引用的以空终止的UTF-8数据来创建新字符串。
不。字符串经常被复制/销毁,这涉及对基础缓冲区执行保留/释放操作,以对引用计数进行必要的保留。如果内存不是字符串所有的,则无法可靠地取消分配它。您试图通过避免复制来实现什么?