Swift 解除分配与免费使用

标签 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

最佳答案

Swift 4 将此签名更改为 deallocate() ,与 free(_:) 相比,更容易做出决定。

作为Hamish pointed outdeallocate 是在 Swift 中解除分配不安全指针的首选方式,API 设计者将此函数放在类型和记录它,而 free(_:) 是全局范围的(在 Swift 中很少适用)并且没有记录。

关于Swift 解除分配与免费使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43717988/

相关文章:

ios - 如何在 Swift 中获取写入 OpenSSL BIO 的 UnsafeMutablePointer<Object> 的长度?

ios - Storyboard 中的 TableView 单元格原型(prototype)未初始化 subview

swift - 升级到 iOS 12.2 (Xcode 10.2) 后 Swift 4.2 中的奇怪泛型和可选行为

swift - 如何将背景图像放到 Swift 4 上的条形按钮

ios - swift3 中的 SecKeyRawSign 和 SecKeyRawVerify

swift - 在 UnsafePointer<DSPSplitComplex> 处写入值

ios - 如何快速组织uitableview的动态数量作为滑动页面

ios - 避免检测终点导航

swift - 如何从字符数组中获取 UnsafeMutableBufferPointer<Character>