object-c 对象内存分配情况
?
结果为:
?
?
// Car.h// SizeOf//// Created by jakend on 13-3-31.// Copyright (c) 2013年 Huhuood. All rights reserved.//#import <Foundation/Foundation.h>@interface Car : NSObject{ NSString *make; NSString *model; NSString *name;//新加的变量 int year;}- (void)setMake:(NSString *)aMake andModel:(NSString *)aModel andYear:(int) aYear;- (void)printCarInfo;- (int) year;@end
?
?
然后再打印:
?
2013-03-31 22:31:30.681 SizeOf[3380:c07] make ===== make1, year ==== 15, model ==== model
12013-03-31 22:31:30.682 SizeOf[3380:c07] make size:4, year size:4, model size:4
2013-03-31 22:31:30.682 SizeOf[3380:c07] object pointer: 4
2013-03-31 22:31:30.683 SizeOf[3380:c07] object itself: 16
2013-03-31 22:31:30.683 SizeOf[3380:c07] car pointer: 4
2013-03-31 22:31:30.683 SizeOf[3380:c07] car itself:32
?
我们发现car的变量为32字节了!!! 我们这里仅仅加了一个变量而已,怎么不是20字节?怎么就变成32字节了?
?
于是我又加上一个NSString *name1,发现还是32字节,加到第五个(总共是8个变量)的时候,发现是48字节了。原来它空间不够的时候是16字节加1次!!!看来书上讲得也不一定正确。
?
通过此例子,发现有些问题还是需要自己多尝试才会得出正确的结论,而不要照着书上死记硬背。
ps:csdn的编辑器不熟悉,格式搞了很久。。。发现选择了jav段居然不能用其他颜色值跟字体大小????
?
?
?