当我在目标c
中使用此语句时NSObject object = [[NSObject alloc] init];
为对象保留了多少内存?
答案 0 :(得分:7)
您可以使用以下代码测试对象的大小:
#import <malloc/malloc.h>
//...
NSObject *obj = [[NSObject alloc] init];
NSLog(@"Size: %zd bytes", malloc_size((__bridge const void *)(obj)));
此测试产生:“大小:16字节”
答案 1 :(得分:0)
根据Instruments,16个字节。 (虽然,那是NSObject *object = ...
)
答案 2 :(得分:0)
这取决于几个因素,包括你是在iOS还是OS X上,你构建的操作系统版本是什么,以及你是在编译32位还是64位。它是8个字节或16个字节。基本上它是16字节,在更近期的环境中 - 有一个指向类数据结构的指针,一个引用计数和四个字节的杂项类特定数据。
请注意,您从malloc_size()获得的答案将始终为16,因为它返回分配块的大小,该大小可能大于malloc请求的实际大小。在OS X和iOS中,分配大小始终至少为16个字节。