4

我在 Swift 3 中使用以下调用分配字节:

let wordSize = 2
let numbytes = 1024*wordsize
var ptr = UnsafeMutableRawPointer.allocate(bytes: numbytes, alignedTo: wordSize)

问题是释放内存是否正确,这两个调用是否相同,或者我应该使用一个而不是另一个?

  free(ptr) // opt 1

  ptr.deallocate(bytes: numbytes, alignedTo: wordSize) //opt 2
4

1 回答 1

4

Swift 4 将此签名更改为deallocate(),与free(_:).

正如Hamish 所指出的,这是deallocate在 Swift 中释放不安全指针的首选方法, API 设计人员将此函数放在类型上并对其进行记录,这一事实得到了加强,而free(_:)全局范围(在 Swift 中很少适用)且未记录。

于 2019-02-01T22:37:24.753 回答