gpt4 book ai didi

swift - 如何使用 UnsafeMutableBufferPointer

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:27 24 4
gpt4 key购买 nike

在 C 中我会做这样的事情

int count = 10;
int *buffer;
num = malloc(count * sizeof(int));
for (int i = 0; i < count; i++) {
buffer[i] = rand();
}

我见过 UnsafeMutablePointer 是这样使用的

let buffer = UnsafeMutablePointer<Int>.alloc(count)
for i in 0..<count {
buffer[i] = Int(arc4random())
}

如何在 Swift 中将 UnsafeMutableBufferPointer 用于 C 风格的缓冲区?另外,我如何为指针重新分配更多空间?

最佳答案

UnsafeMutableBufferPointer 不拥有自己的内存,因此您仍然必须使用 UnsafeMutablePointer 来分配底层内存。但随后您可以将缓冲区指针用作集合,并使用 for-in 循环枚举它。

let count = 50
let ptr = UnsafeMutablePointer<Int>.alloc(count)
let buffer = UnsafeMutableBufferPointer(start: ptr, count: count)
for (i, _) in buffer.enumerate() {
buffer[i] = Int(arc4random())
}

// Do stuff...

ptr.dealloc(count) // Don't forget to dealloc!

Swift 指针不提供realloc 功能。您可以使用 C 函数,或者如果您愿意,可以自己动手做。

关于swift - 如何使用 UnsafeMutableBufferPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34750166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com