// C 指針的內(nèi)存管理
// C 指針在 Swift中被冠以 unsafe 的另一個(gè)是無(wú)法對(duì)其進(jìn)行自動(dòng)的內(nèi)存管理舶赔,需要手動(dòng)的申請(qǐng)和釋放內(nèi)存。
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 成對(duì)出現(xiàn)pointer.deinitialize()
pointer.deallocate(capacity: 1)
// 這里再調(diào)用 pointer 就會(huì)崩潰pointer = nil
// 原則是: 誰(shuí)創(chuàng)建坑夯,誰(shuí)釋放
// tm 是結(jié)構(gòu)體var x: UnsafeMutablePointer!
var t = time_t()
time(&t)
x = localtime(&t)
x = nil
// 上面的例子森爽,我們沒(méi)有創(chuàng)建恋拍,也就不用我們自己釋放了
// 最后衔统,指針的內(nèi)存申請(qǐng)也可以使用 malloc 或者 calloc 來(lái)完成行楞,這種情況下對(duì)應(yīng)的就需要使用 free