如何在不复制的情况下从UnsafeBufferPointer创建一个数组?

7

我现在的情况比较棘手,我有一个非常大的内存块,它是由UnsafeBufferPointer表示的,而我需要将其表示为Array。现在,Swift标准库提供了一个初始化器,可以从任何给定的序列中复制元素,但它没有直接提供底层存储的方法。

有没有办法将UnsafeBufferPointer“转换”为Array,同时避免复制?

1个回答

0
struct UnsafeBufferPointer<Element> { ... }

一个非拥有者的指针,指向在内存中连续存储的元素缓冲区,提供底层元素的集合接口。
init(start: UnsafePointer<Element>, count: Int)

构造一个UnsafePointer,该指针从start开始覆盖count个连续的Element实例。
该构造函数不会在任何地方复制任何内容。它也不会创建任何内存分配。

1
我想从UnsafeBufferPointer创建一个Array。我已经知道了UnsafeBufferPointer的工作原理。 - Vatsal Manot
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - user3441734
我做了,但是答案还是一样的。你无法在某些内存上创建一个数组。 - user3441734
让我们在聊天中继续这个讨论 - user3441734

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接