首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「类与对象」如何准确获取对象的内存大小

class_getInstanceSize 首先,这是一个runtime提供的API,用于获取类实例对象所占用的内存大小,返回所占用的字节数。...说白了,class_getInstanceSize方法就是获取实例对象中成员变量内存大小。...malloc_size 这个函数主要获取系统实际分配的内存大小,具体的底层实现也可以在源码libmalloc找到,具体如下: size_t malloc_size(const void *ptr) {...理解一点即可,这个函数是获取系统实际分配的内存大小。 sizeOf 这个函数大家应该很熟悉,确切的讲,这不是一个函数,就是一个操作符,它的作用对象是数据类型,主要作用于编译时。...应用 学习了上面获取内存大小的工具后,下面这道面试题就能很好的回答了。 一个NSObject对象占用多少内存?

4.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

OC底层探索04-探索对象内存大小OC底层探索04-探索对象内存大小

在alloc时使用了一个8/16字节对齐算法来计算内存大小,想没想过为什么要这样做呢?...objc_class *Class; struct objc_object { Class _Nonnull isa OBJC_ISA_AVAILABILITY; }; sizeof(x)是获取当前类型的内存大小...7UL static inline uint32_t word_align(uint32_t x) { return (x + WORD_MASK) & ~WORD_MASK; } 根据源码发现在获取实际大小后...16字节对齐算法 本质就是通过位运算,将实际内存大小计算为16的倍数.8字节对齐也是类似的。...16字节对齐后,可以加快CPU读取速度,同时使访问更安全,不会产生访问混乱的情况 早期的iOS系统中对象内存大小计算是通过8字节对齐,在分配内存时又进行了16字节对齐;而现在iOS系统中对象的内存大小计算是直接进行

66120
领券