再谈iOS内存管理

2020-06-02  本文已影响0人  GitArtOS

内存管理

内存中的五大区域

内存中的五大区域1.png

栈区的特点

栈区的工作原理

堆区的特点

堆区的大小由系统决定,包括:系统内存/磁盘交换空间

全局变量/静态变量/常量保存的内存区域

验证:

#import <Foundation/Foundation.h>

NSInteger num1 = 10;
NSInteger num2;

static NSInteger sNum1 = 10;
static NSInteger sNum2;
const NSInteger cNum = 10000;//定义一个常量

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"第1个全局变量的地址%p", &num1);
        NSLog(@"第2个全局变量的地址%p", &num2);
        num2=100;
        NSLog(@"第2个全局变量的地址%p(初始化后的)", &num2);
        NSLog(@"##############################################");
        NSLog(@"第1个静态的全局变量的地址%p", &sNum1);
        NSLog(@"第2个静态的全局变量的地址%p", &sNum2);
        sNum2=100;
        NSLog(@"第2个静态的全局变量的地址%p(初始化后的)", &sNum2);
        //第2个静态的全局变量的地址0x100001230(初始化后的)
        NSLog(@"##############################################");
        NSLog(@"第1个常量的地址%p", &cNum); 
        //第1个常量的地址0x100000e88
    }
    return 0;
}

第1个全局变量的地址0x100001218
第2个全局变量的地址0x100001228
第2个全局变量的地址0x100001228(初始化后的)
#################
第1个静态的全局变量的地址0x100001220
第2个静态的全局变量的地址0x100001230
第2个静态的全局变量的地址0x100001230(初始化后的)
##################
第1个常量的地址0x100000e88

静态变量

正确用法

常量

正确用法

const NSInteger cNum = 99;
extern const NSInteger cNum;
上一篇 下一篇

猜你喜欢

热点阅读