靜態儲存區 堆區和棧區

2021-07-27 11:26:00 字數 463 閱讀 3817

**  

記憶體分配有三種:

靜態儲存區、堆區和棧區。他們的功能不同,對他們使用方式也就不同。

靜態儲存區:

內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料、全域性資料和常量。

棧區:在執行函式時,函式(包括main函式)內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量有限。(任何變數都處於站區,例如int a = ,變數a處於棧區。陣列的內容也存在於棧區。)

堆區:亦稱動態記憶體分配。程式在執行的時候用malloc或new申請任意大小的記憶體,程式設計師自己負責在適當的時候用free或delete釋放記憶體。動態記憶體的生存期可以由我們決定,如果我們不釋放記憶體,程式將在最後才釋放掉動態記憶體。 但是,良好的程式設計習慣是:如果某動態記憶體不再使用,需要將其釋放掉,並立即將指標置位null,防止產生野指標。

C 靜態儲存區 棧區和堆區的區別

學習c 如果不了解記憶體分配是一件非常可悲的事情。而且,可以這樣講,乙個c 程式設計師無法掌握記憶體 無法了解記憶體,是不能夠成為乙個合格的c 程式設計師的。一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存...

堆區 棧區 靜態區 常量區還有???

常見的儲存區域可分為 由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,程式會一直占用記憶體,導致記憶體洩漏...

動態儲存區 靜態儲存區 堆和棧的區別

動態儲存區 靜態儲存區 堆和棧的區別 記憶體中使用者儲存空間的分配情況 三種 程式區 存放程式語句 靜態儲存區 動態儲存區 動態儲存方式 動態儲存區 棧 由編譯器自動分配釋放,存放函式的引數值,區域性變數等值。其操作方式類似於資料結構中的棧。會存放函式的返回位址 引數和區域性變數 堆 一般由程式設計...