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

  • 不要等到明天,明天太遙遠,今天就行動。
須讀:看完該文章你能做什么?

了解內存管理的概念

學習前:你必須會什么?(在這里我已經默認你具備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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容