C語言 記憶體分配的方式

2021-07-25 03:38:31 字數 532 閱讀 5785

1、全域性變數和靜態變數(static變數),是由編譯器自動分配和釋放的,初始化的全域性變數和靜態變數放在同一塊記憶體區中,未初始化的全域性變數和靜態變數則放在相鄰的另外一塊記憶體區中。

2、棧,是由編譯器自動分配和釋放的,主要是函式體的位址,引數和區域性變數,靜態變數不包含其中,操作方式類似於資料結構中的棧。

3、堆,是由程式設計師手動完成申請和釋放的,像malloc和new,程式設計師沒有手動釋放的話,當程式結束時由系統釋放沒有釋放的空間,其實現方式與資料結構中的堆完全不同,此時的堆的實現方式有些類似於資料結構中的鍊錶。

4、程式**區,用於存放程式的二進位制**的空間。

5、文字常量區,像常量字串等存放在這裡,程式結束後由系統釋放。

乙個經典的例子:

[csharp]

view plain

copy

[csharp]

view plain

copy

inta = 0; 全域性初始化區  

char

*p1; 全域性未初始化區  

main()  

C語言記憶體分配方式

記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集...

C 記憶體分配的方式

c 記憶體分配的方式有三種 分別是從靜態儲存區分配,從棧上分配記憶體和從堆上分配記憶體。從靜態儲存區域分配的內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。靜態分配的區域的生命期是整個軟體執行期,就是說從軟體執行開始到軟體終止退出。只有軟體終止...

C語言程式的記憶體分配方式

1.記憶體分配方式 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內...