Swift 如何在UnsafeMutableRawPointer上初始化内存

Swift 如何在UnsafeMutableRawPointer上初始化内存,swift,Swift,我正在使用UnsafemtableRawPointer分配内存: let p = UnsafeMutableRawPointer.allocate(bytes: 1000, alignedTo: MemoryLayout<UInt8>.alignment) // do stuff p.deallocate(bytes: 1000, alignedTo: MemoryLayout<UInt8>.alignment) let p=unsafemeutablerawpoi

我正在使用UnsafemtableRawPointer分配内存:

let p = UnsafeMutableRawPointer.allocate(bytes: 1000, alignedTo: MemoryLayout<UInt8>.alignment)

// do stuff

p.deallocate(bytes: 1000, alignedTo: MemoryLayout<UInt8>.alignment)
let p=unsafemeutablerawpointer.allocate(字节:1000,对齐到:MemoryLayout.alignment)
//做事
p、 解除分配(字节:1000,对齐到:MemoryLayout.alignment)
分配后,我想初始化内存,即将0x00写入我刚才分配的所有1000字节。尽管谷歌搜索,我还是不知道怎么做

“DoStuff”是对C库的调用,它将一些字节写入指针;my_c_func(p)

不幸的是,C函数希望所有字节都为空。我只有一个静态库,无法更改C代码。

有:

使用从给定指针开始的值初始化此指针引用的内存,将内存绑定到值的类型,并返回指向已初始化内存的类型指针

示例(Swift 4.2):

有:

使用从给定指针开始的值初始化此指针引用的内存,将内存绑定到值的类型,并返回指向已初始化内存的类型指针

示例(Swift 4.2):


请详细说明你将要完成的任务。在Swift 3+中有许多API可以为您进行内存管理,例如
[UInt8](重复:0x0,计数:1000)
我将修改这个问题。关于
p.initializeMemory(…)
?谢谢大家,让我试试。我不太了解斯威夫特。请详细说明你将要完成的任务。在Swift 3+中有许多API可以为您进行内存管理,例如
[UInt8](重复:0x0,计数:1000)
我将修改这个问题。关于
p.initializeMemory(…)
?谢谢大家,让我试试。我对斯威夫特不太了解。请看,我的意思是“调用中的额外参数‘count’”@peterprograpo:这段代码是用Xcode 10(斯威夫特4.2)编译的。您使用的是哪个版本?@peterprograph:p.initializeMemory(as:UInt8.self,at:0,count:1000,to:0)请看,这表示“调用中的额外参数‘count’”@peterprograph:该代码使用Xcode 10(Swift 4.2)编译。您使用的是哪个版本?@peterprograph:那么它是
p.initializeMemory(as:UInt8.self,at:0,count:1000,to:0)
let p = UnsafeMutableRawPointer.allocate(byteCount: 1000, alignment: MemoryLayout<UInt8>.alignment)
p.initializeMemory(as: UInt8.self, repeating: 0, count: 1000)

// Do stuff ...

p.deallocate()
let uint8ptr = p.initializeMemory(as: UInt8.self, repeating: 0, count: 1000)
// UnsafeMutablePointer<UInt8>