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...