初始化NSObject时保留了多少内存?

时间:2012-12-02 14:26:48

标签: objective-c

当我在目标c

中使用此语句时
NSObject object = [[NSObject alloc] init];

为对象保留了多少内存?

3 个答案:

答案 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个字节。