我在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
答案 0 :(得分:2)
夫特4改变了这种签名deallocate()
,使得相比时可以更容易地决定free(_:)
。
与Hamish pointed out一样, deallocate
是在Swift中取消分配不安全指针的首选方式,API设计人员将此函数置于< / em>类型并记录下来,而free(_:)
是全局作用域(在Swift中很少使用)并且没有记录。