美文网首页
Objective-C编译的程序占用内存分布的结构

Objective-C编译的程序占用内存分布的结构

作者: Corbin___ | 来源:发表于2017-04-12 21:34 被阅读0次

    一、介绍

    二、内存分布结构图

    借用老前辈的图,请见谅!

    三、概念

    栈区:系统自动分配和管理内存,存放方法参数、局部变量等(就是变量名都储存在栈上,这样应该可以)
    堆区:需要程序猿手动创建内存和注销
    全局区/静态区:存放全局变量或者静态变量
    文字常量区:存放字符串
    程序代码区:存放二进制代码

    什么时候销毁呢?

    上面的所有区域在变量在程序结束的时候,都会由系统自动释放

    四、例子

    // 类似以下的全局变量静态变量,就是在全局/静态区了
    static NSString *str;// 全局变量,是在全局区
    
    - (void)clicked:(NSString *)str {
            // str 是方法参数,栈里
            int a = 0; // a是局部变量,栈里
            #注意:这个str是方法参数所以在栈里,但是"123456"这个是字符串所以在文字常量区
            str = @"123456"; 
            #注意:这个是我们手动创建的,但是view这个变量(指针)是在栈里面的,
            #但是这个view指向的内存空间是在堆里面的
            UIView *view = [[UIView allow] init];
    }
    
    
    

    相关文章

      网友评论

          本文标题:Objective-C编译的程序占用内存分布的结构

          本文链接:https://www.haomeiwen.com/subject/rqhvattx.html