【发布时间】:2018-05-28 02:37:49
【问题描述】:
我正在尝试了解 Swift 的不安全指针 API,以便处理音频样本。
非可变指针变体(UnsafePointer、UnsafeRawPointer、UnsafeBufferPointer)对我来说很有意义,它们都用于以只读方式引用先前分配的内存区域。这些变体没有类型方法“分配”
然而,可变变体(UnsafeMutablePointer、UnsafeMutableRawPointer)被记录为实际分配底层内存。 UnsafeMutablePointer (here) 文档中的示例:
静态函数分配(容量:Int)
为指定数量的Pointee类型实例分配未初始化的内存
但是,没有提到 UnsafeMutablePointer.allocate(size) 可能会失败,因此它实际上无法分配内存。相反,如果它确实分配了实际内存,你怎么知道它是否失败了?
我们将不胜感激。
【问题讨论】:
-
API说它分配内存,所以你应该把它当作它总是分配内存:)(如果你真的想知道它无法分配内存时会发生什么;it crashes your program) .
标签: swift memory memory-management