老师,为什么 refcntStrage += SIDE_TABLE_RC_ONE 这行代码会偏移4位,引用计数管理就+1了

来源:6-5 引用计数管理相关面试问题

weixin_慕的地7035837

2019-10-07

retain的实现中, 为什么说 refcntStrage += SIDE_TABLE_RC_ONE 这行代码会偏移4位引用计数管理就+1了size_t前面只占两位是weak跟delloc,不是明白这个偏移跟+1之间的关系?

写回答

1回答

慕容7525655

2019-10-19

老师的原话是:这个+1操作实际上是加上对应偏移量的一个操作,这个偏移量实际上是4。

#define SIDE_TABLE_RC_ONE            (1UL<<2)

没有说过偏移4位这种话。而是说偏移量的值实际上是4。

如果size_t内存后8位是10101010,引用计数+1,应该是10101110,这不就是相当于+4了

4
0

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程