给定一个实例UnsafeMutablePointer
, 调用有什么意义deinitialize(count:)
就在之前deallocate(capacity:)
?
你就不能打电话吗deallocate(capacity:)
?
我在阅读文章的“使用类型指针”部分时看到了这一点不安全的 Swift:使用指针并与 C 交互 on raywenderlich.com.
本文包含以下代码,您可以将其添加到 Xcode 中的新 Playground 中。
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)")
}
}
如果您继续阅读,本文将在下面解释代码。
Update:正如用户 atrick 在下面的评论中指出的,仅需要取消初始化不平凡的类型。也就是说,包括去初始化是一种很好的方法,可以在您更改代码时对代码进行未来验证,以防您更改为不平凡的内容。此外,它通常不会花费任何成本,因为编译器会对其进行优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)