美文网首页
[Swift拓展]4、指针&内存

[Swift拓展]4、指针&内存

作者: 史记_d5da | 来源:发表于2024-04-03 22:03 被阅读0次

1、内存管理

Swift是通过引用计数(ARC)来管理内存的

1.1、swift源码查看

查找过程如下
1、HeapObject类中的 refCounts变量记录引用计数

InlineRefCounts
2、InlineRefCounts为模板类,类型为RefCounts<InlineRefCountBits>
InlineRefCountBits
3、RefCounts类内部存储了InlineRefCountBits
InlineRefCountBits
4、查找InlineRefCountBitsInlineRefCountBits由泛型RefCountBitsT<RefCountIsInline>类型定义
RefCountBitsT<RefCountIsInline>
5、最终查找类RefCountBitsT,构造函数为RefCountBitsT()
RefCountBitsT类
6、通过查找64位结构体,查找到对应的值
RefCountBitOffsets
RefCountBitsT函数对应的入参位域运算分别如下
strongExtraCount: 0
unownedCount: 1
StrongExtraRefCountShift: 33,(左移33位)(强引用次数)
PureSwiftDeallocShift: 1,(左移0位)(析构次数)
UnownedRefCountShift: 1,(左移1位)(无主引用次数)

1.2、代码实际操作

1、如下的代码断点查看

demo
断点在108处,0x0000000400000003
内存值
结合上面的RefCountBitsT函数,0x0000000400000003,代表PureSwiftDeallocShift为1,UnownedRefCountShift为1,StrongExtraRefCountShift为2
位值

相关文章

  • Swift -- 4.指针&内存管理

    一.为什么说指针不安全 比如我们在创建一个对象的时候,是需要在堆分配内存空间的。但是这个内存空间的声明周期是有限的...

  • 函数指针-函数指针-案例-动态分配内存-重新分配内存-内存泄漏

    1、函数指针2、函数指针-案例3、动态分配内存4、重新分配内存5、内存泄漏 1、函数指针 2、函数指针-案例 3、...

  • C 指针内存管理

    // C 指针的内存管理 // C 指针在 Swift中被冠以 unsafe 的另一个是无法对其进行自动的内存管理...

  • swift指针操作

    swift官方不建议使用指针,为了安全起见,而且使用比较麻烦,内存必须自己管理 1、直接创建指针 2、获取指针 可...

  • [Swift] 指针UnsafePointer

    本文系学习Swift中的指针操作详解的整理 默认情况下Swift是内存安全的,苹果官方不鼓励我们直接操作内存。但是...

  • C语言重点之指针

    指针是什么?指针占用的内存空间是多少?指针变量是什么? 指针占用的内存大小——4个字节(32位系统),为什么都是4...

  • Swift 指针&内存管理

    指针 为什么说指针不安全 比如我们在创建一个对象的时候,是需要在堆分配内存空间的。但是这个内存空间的声明周期是有限...

  • Swift指针&内存管理

    一、指针    1、指针类型   Swift中的指针分为两类:指定数据类型的指针(typed pointer);未...

  • Swift指针|内存管理

    一、Swift指针 1.Swift指针简介 swift中的指针分为两类 typed pointer 指定数据类型指...

  • swift指针&内存管理-内存绑定

    swift提供了3种不同的API来绑定/重新绑定指针 assumingMemoryBound(to:) bindM...

网友评论

      本文标题:[Swift拓展]4、指针&内存

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