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