ma1*_*w28 5 memory-management swift unsafemutablepointer
给定 的一个实例,在 之前UnsafeMutablePointer调用有什么意义?deinitialize(count:)deallocate(capacity:)
你就不能打电话吗deallocate(capacity:)?
我在raywenderlich.com上阅读Unsafe Swift:Using Pointers And Interacting With C文章的“Using Typed Pointers”部分时看到了这一点。
本文包含以下代码,您可以将其添加到 Xcode 中的新 Playground 中。
Run Code Online (Sandbox Code Playgroud)let count = 2 let stride = MemoryLayout<Int>.stride let alignment = MemoryLayout<Int>.alignment let byteCount = stride * count do { print("Typed pointers") let pointer = UnsafeMutablePointer<Int>.allocate(capacity: count) pointer.initialize(to: 0, count: count) defer { pointer.deinitialize(count: count) pointer.deallocate(capacity: count) } pointer.pointee = 42 pointer.advanced(by: 1).pointee = 6 pointer.pointee pointer.advanced(by: 1).pointee let bufferPointer = UnsafeBufferPointer(start: pointer, count: count) for (index, value) in bufferPointer.enumerated() { print("value \(index): \(value)") } }
如果您继续阅读,本文将在下面解释代码。
\n\n\n\n更新:正如用户 atrick 在下面的评论中指出的,只有非平凡类型才需要去初始化。也就是说,包括去初始化是一种很好的方法,可以在您更改一些不平凡的内容时对您的代码进行未来证明。此外,它通常不会\xe2\x80\x99 花费任何成本,因为编译器会对其进行优化。
\n
| 归档时间: |
|
| 查看次数: |
2026 次 |
| 最近记录: |