xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp
#import <objc/runtime.h>
#import <malloc/malloc.h>
NSObject *obj = [[NSObject alloc] init];
//成员变量所占用大小
NSLog(@"获得NSObject 类的势力对象的大小 %zu",class_getInstanceSize([NSObject class]));
//
NSLog(@"获得obj指针所指向内存大小%zu",malloc_size((__bridge const void*)obj));
系统分配了16个字节给对象
当NSObject对象只是用了8个字节的空间(64bit环境)
2020-06-22 14:29:15.884646+0800 demo[17442:701392] 获得NSObject 类的势力对象的大小 8
2020-06-22 14:29:15.886745+0800 demo[17442:701392] 获得obj指针所指向内存大小16
(lldb) p obj
(NSObject *) $0 = 0x0000600003c601a0
(lldb) po obj
<NSObject: 0x600003c601a0>
(lldb) memory read 0x600003c601a0
0x600003c601a0: 38 df 18 0a 01 00 00 00 00 00 00 00 00 00 00 00 8...............
0x600003c601b0: b0 01 31 b3 61 80 00 00 26 00 00 00 00 00 00 00 ..1.a...&.......
(lldb) x/3xg 0x600003c601a0
0x600003c601a0: 0x000000010a18df38 0x0000000000000000
0x600003c601b0: 0x00008061b33101b0
(lldb) memory write 0x600003c601a0 9 //修改指针位置
(lldb) memory read 0x600003c601a0
0x600003c601a0: 09 df 18 0a 01 00 00 00 00 00 00 00 00 00 00 00 ................
0x600003c601b0: b0 01 31 b3 61 80 00 00 26 00 00 00 00 00 00 00 ..1.a...&.......
内存对齐:结构体大写必须最大最大成员大小的倍数