我有以下代码,但不起作用。如何将数据填入UnsafeMutablePointer
的内存块? bufferSize是1024.我试图将0,1,2 ... 1023填入缓冲区。
let pbuffer = UnsafeMutablePointer<UInt8>.alloc(bufferSize)
for index in 0...bufferSize - 1
{
pbuffer[index] = UInt8(index)
}
谢谢!
答案 0 :(得分:8)
您的问题不是UnsafeMutablePointer
,而是您尝试使用不适合的值初始化UInt8
; UInt8
的最大值为255
。因此,最多bufferSize
256
,您的代码将正常运行;除此之外,它会崩溃。
要解决此问题,您需要为UnsafeMutablePointer
使用不同的类型。如果您想要bufferSize
1024
,UInt16
可以正常工作(最大值65535
):
let bufferSize = 1024
let pbuffer = UnsafeMutablePointer<UInt16>.alloc(bufferSize)
for index in 0..<bufferSize
{
pbuffer[index] = UInt16(index)
}