我遇到了一个棘手的情况,我有一个非常大的内存,由一个 UnsafeBufferPointer
表示,我需要将它表示为一个 Array
。现在,Swift 标准库提供了一个初始化器,可以复制任何给定序列中的元素,但是它无法直接提供底层存储。
有什么方法可以在避免复制的同时将 UnsafeBufferPointer
“转换”为 Array
?
最佳答案
struct UnsafeBufferPointer<Element> { ... }
A non-owning pointer to buffer of Elements stored contiguously in memory, presenting a Collection interface to the underlying elements.
答案是否定的,不可能的。
init(start: UnsafePointer<Element>, count: Int)
Construct an UnsafePointer over the count contiguous Element instances beginning at start.
构造函数不会在任何地方复制任何东西。构造函数不创建任何内存分配
关于arrays - 如何在不复制的情况下从 UnsafeBufferPointer 创建数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852816/