Swift deallocate与免费使用

时间:2017-05-01 10:54:11

标签: swift unsafemutablepointer

我在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

1 个答案:

答案 0 :(得分:2)

夫特4改变了这种签名deallocate(),使得相比时可以更容易地决定free(_:)

Hamish pointed out一样, deallocate是在Swift中取消分配不安全指针的首选方式,API设计人员将此函数置于< / em>类型并记录下来,而free(_:)是全局作用域(在Swift中很少使用)并且没有记录。