五類內存
1.棧區()
主要存放函數參數值、函數局部變量等。典型操作是子程序調用時,子程序不斷佔用棧內存,而子程序也正是利用了棧先入後出的特性實現了子程序調用的功能。
棧空間從高地址向低地址延伸,是一塊連續的內存空間,且是一塊非共享區域。
2.堆區()
由程序員進行申請與釋放,如 、、 等方法,若程序員未釋放,則由 進行回收。堆是從低地址向高地址擴展的內存區域,是一塊不連續的內存區域,但是一塊共享區域。
3.全局區(靜態區 / )
存儲全局變量和靜態變量的區域,程序結束後由 釋放。
4.文字常量區
常量字符串存放區域,程序結束後由 釋放。
5.程序代碼區
存放函數體的二進制代碼。
代碼舉例
int total = 0; //全局變量,全局區
int main(){
int a; //棧
char b[] = "abc"; //棧
char *c = "123456"; //c在棧上,"123456"在常量區
static int d = 0; //全局區
b = (char*)malloc(10); //分配的10字節內容在堆區,但b指針仍在棧區
return 0;
}