程式編寫完成後。程式首先要裝載到計算機的核心或者半導體記憶體中,之後執行程式。有四個邏輯段:
以上4類根據作業系統和編譯器的不同,堆和棧既可以是被所有同時執行的程式共享的作業系統資源,也可以是使用程式獨佔的區域性資源。
堆與棧通過記憶體組織方式可以看到,堆用來存放動態記憶體分配空間,而棧用來存放區域性資料物件、函式的引數以及呼叫函式和被呼叫函式的聯絡。
堆在記憶體的全域性儲存空間中,用於程式動態分配和釋放的記憶體塊稱為自由儲存空間,通常也稱之為堆。
在c程式中,使用malloc函式和free函式從堆中動態的分配和釋放記憶體。
#include
intmain()
棧
程式不會像處理堆那樣在棧中顯式的分配記憶體。當程式呼叫函式和宣告區域性變數時,系統將自動分配記憶體。
棧是先進後出的彈出式資料結構。如果棧『指標位於棧頂,則表明棧是空的,如果棧指標指向棧底資料項的下一項,則表明棧是滿的。
#include
void
displayb
(char
* string)
void
displaya
(char
* string)
intmain()
c語言中的儲存型別
auto 自動型別 在定義變數的時候,變數前預設就是auto auto int a 等於 int a 非自動型別的變數 1.全域性變數 2.static修飾的變數 register 暫存器型別的變數 register int a 暫存器型別的變數,要不普通的變數執行效率要高。在乙個soc syste...
C語言中的儲存類別,鏈結和記憶體管理
這是本人關於 c primer plus 這本c語言經典著作 第12章的乙個總結 如有不對 歡迎指出 int a 3 這個東西建立了乙個 叫做 a 的識別符號 從硬體上來看 就是 有乙個叫a的識別符號占用了一定物理記憶體 識別符號有兩個性質 乙個叫 作用域 scope 還有乙個叫 鏈結 linkag...
C語言中的記憶體管理
先說一下c語言中的記憶體管理。1.動態記憶體分配 原因 程式執行過程中,很有可能需要一些額外的記憶體空間。動態記憶體從 來,還給誰?這塊是記憶體是系統專門預留出來的,給程式動態的分配和動態的歸還的。當free函式的引數為空的時候,那麼我們的free什麼事都不做了。clloc和realloc的用法見截...