野指標,記憶體管理(靜態區 棧 堆) 筆記

2021-07-27 05:08:32 字數 568 閱讀 5554

野指標:

在定義指標變數的同時最好初始化為null,這樣,不容易出現錯誤。

靜態區:

儲存自動全域性變數和static變數,在靜態區中的內容,在整個程式的生命週期內都存在,又編譯器在編譯的時候分配。

堆疊:堆疊就是棧,儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容也會別自動銷毀。其特點是效率高,但空間大小有限。 堆:

由malloc系列函式或new操作符分配的記憶體。其生命週期由free或delete決定。但在沒有釋放之前一直存在,直到程式結束。其特點的使用靈活,空間比較大,但容易出錯。

使用malloc函式分配一塊記憶體要注意:如果申請的記憶體塊大於目前剩餘記憶體塊(整塊),則記憶體分配會失敗,函式返回null。注意:malloc函式申請的是一塊連續的記憶體。  既然malloc函式申請可能會失敗,所以需要使用if(null!=p)語句來驗證記憶體確實分配成功了。

使用malloc函式申請0位元組記憶體,不會返回null指標,但是,並不能使用它。

free() 其實是斬斷了指標變數與這塊記憶體的關係。

在使用free()釋放記憶體後,將指標置為null,避免出錯。

堆記憶體 棧記憶體 靜態儲存區

參考部落格 一般說到記憶體,指的是計算機的隨機儲存器ram,程式都是在這裡面執行。1.棧記憶體 棧記憶體由作業系統自動分配和釋放,速度快,使用方便,但程式設計師無法控制。若分配失敗,則提示棧溢位錯誤。注意,const區域性變數也儲存在棧中,向著記憶體位址減小的方向增長。棧記憶體儲存的是程式執行過程中...

記憶體分配 靜態儲存區 棧 堆

一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式內區域性變數的儲存單元都可以在...

記憶體分配 靜態儲存區 棧 堆

一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式內區域性變數的儲存單元都可以在...