C和C 記憶體分割槽

2021-09-02 15:22:03 字數 392 閱讀 9345

在c和c++編譯的程式大致可以分為五個區:

1.堆區:由程式設計師自己分配和釋放,如果程式設計師一直沒有釋放這部分記憶體,那麼程式結束的時候會由os**。這裡開闢空間一般是new,malloc等函式。要注意的是,像我們malloc開闢一片空間出來,同時也向裡面賦值了,但是程式執行的過程我們去把這一片空間釋放了,只是這一片空間被設定為可以再次被使用,裡面的內容不一定會被清空為0.

2.棧區:一般由編譯器自己去分配和釋放,存放像區域性變數,函式名等等。

3.全域性/靜態儲存區:在程式編譯階段就開闢空間和初始化好,生命週期是整個程式執行的週期。主要存放全域性變數(會自動初始化),靜態變數等等。

4.字元常量區:存放字元常量,程式結束的時候釋放。

5.**區:存放函式的二進位制**。

如有錯誤,望指正。

c 記憶體分割槽

堆 由程式設計師手動分配和釋放,完全不同於資料結構中的堆,分配方式類似鍊錶。由malloc c語言 或new c 來分配,free c語言 和delete c 釋放。若程式設計師不釋放,程式結束時由系統釋放。棧 由編譯器自動分配和釋放的,存放函式的引數值 區域性變數的值等。操作方式類似資料結構的棧。...

C 記憶體分割槽

前言 最近正在學習有關static的知識,發覺對c 的記憶體分割槽不是很了解,上網查了很多資料,遂將這幾天的學習筆記進行了簡單整理,發表在這裡 棧區 stack 主要用來存放函式的引數以及區域性變數。棧區由系統進行記憶體管理,在函式完成執行時,系統會自行釋放棧區的記憶體,而不需要使用者參與管理。整個...

C 記憶體分割槽

程式編譯後生成的二進位制檔案放在記憶體中的 區 全域性變數 函式外宣告的變數 靜態區域性變數 static修飾的變數 常量字串常量 hello world const 全域性變數 全域性常量 note const修飾的區域性變數不在全域性區 且區域性變數也不在全域性區 區域性變數 函式引數 存放在棧...