iOS对象内存地址分配
iOS的对象编译转换为C/C++后,每一个对象都对应一个结构体
查看源码可以了解到
使用下面方法即可将Objective-C代码转换为C\C++代码
将Objective-C代码转换为C\C++代码
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc OC源文件 -o 输出的CPP文件
如果需要链接其他框架,使用-framework参数。比如-framework UIKit
创建一个实例对象至少需要多少内存
一个单独的对象所占内存为16个字节,其中isa占8个字节,其余8个字节为0
可以通过一下代码查看
创建一个实例对象,至少需要多少内存?
#import <objc/runtime.h>
class_getInstanceSize([NSObject class]);
创建一个实例对象,实际上分配了多少内存?
#import <malloc/malloc.h>
malloc_size((__bridge const void *)obj);
结构体的内存分配原则:
结构体的大小必须是最大成员大小的倍数,即遵循内存对齐原则
综上:
系统分配了16个字节给NSObject对象(通过malloc_size函数获得)
但NSObject对象内部只使用了8个字节的空间(64bit环境下,可以通过class_getInstanceSize函数获得)
网友评论