C 指针内存管理

// 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

你可能感兴趣的:(C 指针内存管理)