// C 指针的内存管理
// C 指针在 Swift中被冠以 unsafe 的另一个是无法对其进行自动的内存管理,需要手动的申请和释放内存。
class MyClass {
var a = 1
deinit {
print("deint")
}
}
var pointer : UnsafeMutablePointer!
pointer = UnsafeMutablePointer.allocate(capacity: 1)
pointer.initialize(to: MyClass())
print(pointer.pointee.a)
// 输出 1
// 这里必须释放
// deallocate, deinitiallize 必须和 allocate, initialize 成对出现pointer.deinitialize()
pointer.deallocate(capacity: 1)
// 这里再调用 pointer 就会崩溃pointer = nil
// 原则是: 谁创建,谁释放
// tm 是结构体var x: UnsafeMutablePointer!
var t = time_t()
time(&t)
x = localtime(&t)
x = nil
// 上面的例子,我们没有创建,也就不用我们自己释放了
// 最后,指针的内存申请也可以使用 malloc 或者 calloc 来完成,这种情况下对应的就需要使用 free