CI会做这样的事情
int count = 10;
int *buffer;
num = malloc(count * sizeof(int));
for (int i = 0; i < count; i++) {
buffer[i] = rand();
}
Run Code Online (Sandbox Code Playgroud)
我见过像这样使用的UnsafeMutablePointer
let buffer = UnsafeMutablePointer<Int>.alloc(count)
for i in 0..<count {
buffer[i] = Int(arc4random())
}
Run Code Online (Sandbox Code Playgroud)
如何在Swift中为C风格缓冲区使用UnsafeMutableBufferPointer?另外,我如何为指针重新分配更多空间?
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!
Run Code Online (Sandbox Code Playgroud)
Swift指针不提供realloc功能.您可以使用C函数,或者如果您想这样做,可以使用自己的函数.
| 归档时间: |
|
| 查看次数: |
2651 次 |
| 最近记录: |