美文网首页
C 指针内存管理

C 指针内存管理

作者: fordring2008 | 来源:发表于2017-02-04 10:23 被阅读48次

// 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 指针内存管理

      本文链接:https://www.haomeiwen.com/subject/cuyjittx.html