iOS程序猿iOS学习笔记认真阅读评论专题

OC底层探索21-内存五大区域

2021-06-29  本文已影响0人  Henry________

iOS设备中,内存被人为的分成5大区域栈区、堆区、全局/静态区、常量区、代码区,所占内存都为系统分配的虚拟内存

布局结构如图:


1、栈区

1.1 栈区特点

2、堆区

2.1 栈区特点

3、全局/静态区

4、常量区

5、代码区

验证

NSLog(@"字符串地址:%p",@"constq3123");
NSLog(@"常量地址:%p",&constStr);
static NSString *staticStrUn;
static NSString *staticStr = @"constq3123";
NSLog(@"静态变量地址:%p",&staticStr);
NSLog(@"未初始化静态变量地址:%p",&staticStr);
HRTest * test = [HRTest alloc];
NSLog(@"对象地址:%p",test);
NSLog(@"局部变量指针地址:%p",&test);
-(void)say{
    NSLog(@"方法参数self:%p",&self);
    NSLog(@"方法参数cmd:%p",&_cmd);
}

输出:



通过一些简单的方式进行验证。

区域验证

一则面试题

问:define和const声明的变量有什么区别?

上一篇下一篇

猜你喜欢

热点阅读