iOS app运行中的内存分配

2021-04-12  本文已影响0人  YSH_110

在描述内存分配之前,我们需要先搞懂两个东西RAM,ROM

1.存储器

CPU - RAM - ROM之间的关系图


image.png

2.程序启动运行

App安装到手机号,存储在rom中,系统会把app程序从rom拷贝到ram,然后从ram中执行代码

3.RAM内存分布

RAM内存中5个分区

image.png
#import "VC"

@interface VC()
@end

nsinteger a = 10 //全局初始化区
NSArray *array; //全局未初始化区

@implementation VC

-(void)viewDidLoad
{

    //uiview *subV 指针存在栈区  【uiview alloc【init】对象保存在堆区
    UIView *SubV =[ [uiview alloc]init];
    nsstring *string = @"8888"; //string存在栈区,8888存在常量区
    static nsinteger count= 0;//count全局静态初始化区   0在常量区
    
}

@end

4.注意事项

  1. 栈区的变量由编译器负责分配和释放,内存随着函数的运行分配 ,随着函数的结束而释放,有系统自动完成。只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常,提示栈溢出

2、 当app启动时,代码区,常量区,全局区大小早已固定,而堆区和栈区是时刻变化的(堆区的创建和销毁,栈的弹入弹出),当使用一个指针指向这两个区里面的内存时,一定要注意内存是否已经被释放,否则将产生程序崩溃

上一篇 下一篇

猜你喜欢

热点阅读