C語言的內存分配主要有5個區域:
1、棧區:在執行函數時,函數內的局部變量(不包括static變量)、函數返回值的存儲單元在棧區上創建。函數執行結束時這些存儲單元自動被釋放。棧區內存分配運算內置於處理器的指令集中,效率很高,但分配的內存容量有限。
2、堆區:程序在運行的時候用malloc(calloc、realloc等)申請的內存,要由程序員自己負責用free釋放內存。
3、靜態存儲區:存放全局變量和static變量。該內存在程序編譯時候就已經分配好,在程序整個運行期間都存在。
4、常量區:整型常量、浮點型常量、字符型常量及字符串常量都分配在文字常量區,程序結束後有系統釋放。
5、代碼區:存放整個程序代碼的內存區域。數據和代碼是分開存儲的。