OC对象的本质-窥探OC对象内存结构

2020-09-25  本文已影响0人  凌云01

OC对象的本质
OC对象的本质-窥探OC对象内存结构
OC对象的本质-继承关系
上一篇文章我们分析了OC对象的本质,这一篇我们来研究OC对象的内存结构

第一种方式

Student.jpg

我们首先在代码里打上断点,然后Debug->Debug Workflow->View Memory

内存地址.jpg

第二种方式:通过LLDB

常用LLDB指令

(lldb) po stu
<Student: 0x100529f00>

(lldb) p stu
(Student *) $6 = 0x0000000100529f00

(lldb) memory read 0x100529f00
0x100529f00: 59 21 00 00 01 80 1d 00 04 00 00 00 05 00 00 00  Y!..............
0x100529f10: 2d 5b 4e 53 53 63 72 75 62 62 65 72 41 72 72 61  -[NSScrubberArra

(lldb) x 0x100529f00
0x100529f00: 59 21 00 00 01 80 1d 00 04 00 00 00 05 00 00 00  Y!..............
0x100529f10: 2d 5b 4e 53 53 63 72 75 62 62 65 72 41 72 72 61  -[NSScrubberArra

(lldb) x/4xw 0x100529f00
0x100529f00: 0x00002159 0x001d8001 0x00000004 0x00000005

(lldb) x/4dw 0x100529f00
0x100529f00: 8537
0x100529f04: 1933313
0x100529f08: 4
0x100529f0c: 5

(lldb) x/4xb 0x100529f00
0x100529f00: 0x59 0x21 0x00 0x00

(lldb) x/16xb 0x100529f00
0x100529f00: 0x59 0x21 0x00 0x00 0x01 0x80 0x1d 0x00
0x100529f08: 0x04 0x00 0x00 0x00 0x05 0x00 0x00 0x00

(lldb) 

那么回到最初:

一个NSObject对象占用多少内存?
系统分配给NSObject对象16个字节
实际使用的是指:一个指针变量所占用的内存(64bit: 8个字节 32bit:4个字节)


这里请大家思考一下:在64bit环境下,一个Person对象,一个Student对象占用多少内存呢?

@interface Person : NSObject
{
    int _no;
}
@end

@implementation Person
@end

@interface Student : Person
{
    int _age;
}
@end
@implementation Student
@end

答案下一篇揭晓

上一篇:OC对象的本质
下一篇:OC对象的本质-继承关系

上一篇下一篇

猜你喜欢

热点阅读