NSObject 基类的实例对象占用多少内存空间?

OC底层:
NSObject 基类的实例对象占用多少内存空间?

//内存分配源码
size_t instanceSize(size_t extraBytes) {
size_t size = alignedInstanceSize() + extraBytes;
// CF requires all objects be at least 16 bytes.
if (size < 16) size = 16;
return size;
}
理论上来说通过苹果公司内存分配的源码做分析,NSObject的实例(类)对象都会分配至少16byte(bit)内存空间(至少为对象开辟16byte(bit)内存空间(受限于内存对齐分配特性影响))。
实际上由于现有硬件设备的限制,电脑64位操作系统下对NSObject对象只需要分配8bit字节内存空间满足使用,电脑32位操作系统下对NSObject对象只需要分配4bit字节内存空间满足使用。
#import <Objc/Runtime>
Class_getInstanceSize([NSObject Class])
本质
size_t class_getInstanceSize(Class cls)
{
if (!cls) return 0;
return cls->alignedInstanceSize();
}
Obj-C语法体系isa指针所指向的堆内存大小,实际上是16 bit字节(结构内存对齐统一特性导致部分内存未实际使用)

#import <malloc/malloc.h>
malloc_size((__bridge const void *)obj); //堆内存开辟分配

在iOS体系中,内存空间的开辟和分配按照16bit字节的倍数进行。
对象的类:虚拟结构概念体系本身
类对象:虚拟结构概念体系本身规则信息对应的堆内存区
实例对象:instanceofClass实例型对象
硬件集成设备体:入口Input/出口Output-软件集成函数体:I/O入参/出参
CPU中央处理器从内存储区读取渲染数据信息(指令码文件单元先转编译为机器码存入内存中)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaiJunYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值