2 OC 对象的本质(一个Student 占用的内存大小)

本文详细解释了Objective-C中一个名为Student的类如何占用内存空间。通过实例展示了一个包含两个int类型成员变量的Student类继承自NSObject时的具体内存占用情况,并讨论了内存对齐规则及其对内存占用的影响。

一 Student 占用的内存空间

 

补充:

1 成员变量占用字节的大小:

 

2 内存对齐的规则:结构体的内存大小必须是最大成员变量的内存的倍数。

 

一个 Student 类,继承自NSObject,有两个属性,首先要知道,int 类型占用的字节是4个字节

  以下打印结果都是16 ,一个int 类型的成员变量占用4个字节,两个占用8个字节,加上父类的isa 指针,一共16个字节

 


#import <Foundation/Foundation.h>

#import <objc/runtime.h>
#import <malloc/malloc.h>

@interface Student:NSObject
{

	@public
	int _no;
	int _age;
}
@end


@implementation Student


@end

int main(int argc, const char * argv[]) {
	@autoreleasepool {
	    // insert code here...
	    NSObject *obj = [[NSObject alloc]init];
	    
	    Student *stu = [[Student alloc]init];
		NSLog(@"%zu",malloc_size((__bridge const void *)(stu)));
		NSLog(@"%zu",class_getInstanceSize([Student class]));
		
	}
	return 0;
}

 

 

2  思考 ?

以下还是占用 16个字节的内存空间

 

person 占用16个字节是因为内存对齐

student 占用16个字节是因为确确实实就是16个字节

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值