Swift 如何在UnsafeMutableRawPointer上初始化内存
我正在使用UnsafemtableRawPointer分配内存: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
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>