Swift:将数据填充到UInt8类型的unsafeMutablePointer中并不起作用

时间:2014-09-23 18:51:39

标签: swift

我有以下代码,但不起作用。如何将数据填入UnsafeMutablePointer的内存块? bufferSize是1024.我试图将0,1,2 ... 1023填入缓冲区。

let pbuffer = UnsafeMutablePointer<UInt8>.alloc(bufferSize)

for index in 0...bufferSize - 1 
{

    pbuffer[index] = UInt8(index)

}

谢谢!

1 个答案:

答案 0 :(得分:8)

您的问题不是UnsafeMutablePointer,而是您尝试使用不适合的值初始化UInt8; UInt8的最大值为255。因此,最多bufferSize 256,您的代码将正常运行;除此之外,它会崩溃。

要解决此问题,您需要为UnsafeMutablePointer使用不同的类型。如果您想要bufferSize 1024UInt16可以正常工作(最大值65535):

let bufferSize = 1024
let pbuffer = UnsafeMutablePointer<UInt16>.alloc(bufferSize)

for index in 0..<bufferSize
{
    pbuffer[index] = UInt16(index)
}