美文网首页八天学会OC
第05天OC语言(01):内存管理基本概念

第05天OC语言(01):内存管理基本概念

作者: liyuhong | 来源:发表于2017-07-22 08:56 被阅读11次
    • 不要等到明天,明天太遥远,今天就行动。
    须读:看完该文章你能做什么?

    了解内存管理的概念

    学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

    什么是内存。什么是栈,什么是堆,创建一个对象在栈堆、是怎么存储的


    一、本章笔记
    一、内存管理的重要性
        如果app用的内存过大,会强制关闭APP
     
    二、什么是内存管理
        分配内存 和 清除内存
     
     // 内存管理的管理范围
     任何继承了NSObject的对象 都要进行内存管理
     对于其他非 对象类型无需内存管理 (int、char、float、double、struct、enum)等
     
     #warning 存储的对象 都会存放到堆里面, 栈里面系统会帮我们自动释放
     // 只有OC对象才需要进行内存管理的本质原因
     OC对象存放于堆 里面
     非OC对象一般存放在栈里面(栈内存会被系统 自动回收)
     
    三、栈和堆
      栈(操作系统): 由操作系统自动分配释放, 存放函数的参数值, 局部变量的值等,
      其操作方式类似于 数据结构中的栈(先进后出);
     
      堆(操作系统) : 一般有程序员分配释放, 若程序员不释放, 应用结束可能由OS回收,分配方式 到似于链表。
    
    
    二、code
    main.m
    #pragma mark 01-内存管理基本概念
    /*
    一、内存管理的重要性
        如果app用的内存过大,会强制关闭APP
     
    二、什么是内存管理
        分配内存 和 清除内存
     
     // 内存管理的管理范围
     任何继承了NSObject的对象 都要进行内存管理
     对于其他非 对象类型无需内存管理 (int、char、float、double、struct、enum)等
     
     #warning 存储的对象 都会存放到堆里面, 栈里面系统会帮我们自动释放
     // 只有OC对象才需要进行内存管理的本质原因
     OC对象存放于堆 里面
     非OC对象一般存放在栈里面(栈内存会被系统 自动回收)
     
    三、栈和堆
      栈(操作系统): 由操作系统自动分配释放, 存放函数的参数值, 局部变量的值等,
      其操作方式类似于 数据结构中的栈(先进后出);
     
      堆(操作系统) : 一般有程序员分配释放, 若程序员不释放, 应用结束可能由OS回收,分配方式 到似于链表。
     
     */
    #import <Foundation/Foundation.h>
    #pragma mark 类
    
    #pragma mark main函数
    int main(int argc, const char * argv[])
    {
        
        
        int a = 10; // 栈
        int b = 20; // 栈
        
        // p :  栈
        // person 对象(计算器 == 1) : 堆
        /*
         Person = *p = [[Person alloc]init];
         */
        
        /*
         记过上一行代码后, 栈里面的变量a\b\p都会被回收,
         但是堆里面的Person对象还会留在内存中, 因为它是计数器 依然是1
         */
        
        return 0;
    }
    
    
    Person
    >>>.h
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    @end
    
    >>>.m
    #import "Person.h"
    
    @implementation Person
    
    @end
    
    

    相关文章

      网友评论

        本文标题:第05天OC语言(01):内存管理基本概念

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