C語言記憶體五區的使用

2021-09-29 07:25:08 字數 1138 閱讀 1982

malloc,new,free,delete,需要手動釋放記憶體

一般由程式設計師分配釋放,若不手動釋放,程式結束時可能由作業系統**。

程式區域性變數

由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。

常量和全域性變數

全域性變數和靜態變數的儲存是放在一起的,初始化的全域性變數和靜態變數在一塊區域,未初始化的在相鄰的另一塊區域,該區域在程式結束後由作業系統釋放。

字串常量和其他常量的儲存位置,程式結束後由作業系統釋放。

存放函式體的二進位制**

呼叫流程:

作業系統把物理硬碟**load到記憶體

作業系統把c**分成四個區

靜態區域性變數在呼叫函式後就儲存在全域性區。

#include #include #include int main(void)

指標指向誰,就把誰的位址賦值給指標。

當兩個函式的不同指標的內容(常量)相同時,在記憶體的全域性區只占用一塊相同的空間。

}記憶體存放方向也是從低到高。

C 的五種記憶體儲存區

在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個n...

C語言記憶體區概述

在c c 中,記憶體分成5個區 堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧 由編譯器在需要的時候分配,在不需要的時候就會自動清除的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆 由new分配的記憶體塊,這些的釋放編譯器不會去管,由應用程式去控制,一般乙個new就要對應乙個del...

C語言的記憶體四區

在執行乙個c語言程式時,此程式將擁有唯一的 記憶體四區 棧區 堆區 全域性區 區.一 棧區 由編譯器自動分配釋放,存放函式的形參 區域性變數等。當函式執行完畢時自動釋放。includechar getmem void main printf tmp s n tmp 輸出tmp system paus...