oc的内存布局与c语言基本相同,分为:
1.堆内存区:由开发者分配释放,引入arc机制后可由系统分配释放。通常oc中的所有对象内存都是分配在堆上。
2.栈内存区:由编译器自动分配释放。常见基本数据类型,对象的指针,例如OC中的NSInteger 。
3.静态存储区:包括静态变量,全局变量,常量,代码。
举例一:
NSURL* url = [[NSURL alloc] init];
url的对象指针在栈上, 分配的内存在堆上。
举例二:
NSArray* arr = [NSArray arrayWithObject:@"hi"];
NSString* str = @"hello";
arr,str的对象指针在栈上 ,分配的内存在静态存储区