報告:20.4% 的 Z 世代選擇“今年雙 11 不購物”
阿新 • • 發佈:2021-11-13
一個由C/C++編譯的程式佔用的記憶體分為以下幾個部分:
1、棧區(stack):由系統自動分配和釋放,存放函式的引數值,區域性變數的值等。
2、堆區(heap):一般由程式設計師分配和釋放,若程式設計師不釋放,程式結束時可能由系統回收。
3、全域性區/靜態區(static):全域性變數和靜態變數的儲存是放在一起的,初始化的全域性變數和靜態變數在一塊區域;未初始化的全 局變數和未初始化的靜態變數在相鄰的另一塊區域,程式結束後由系統釋放。
4、文字常量區:常量字串就放在這裡,程式結束後由系統釋放。
5、程式程式碼區:存放函式體的二進位制程式碼。
說了這麼多還是沒啥概念?下面舉個例子:
int a = 0; //全域性初始化區
char *p; //全域性未初始化區
void main()
{
int b; //棧區
char s[] = "abcd"; //棧區
char *p2; //棧區
char *p3 = "123456"; //123456在常量區,p3在棧區
static int c = 0; //全域性(靜態)初始化區
p1 = (char *)malloc(10); //分配所得的10位元組區域位於堆區
p2 = (char *)malloc(20); //分配所得的20位元組區域位於堆區
strcpy(p1, "123456");
}
參考部落格:https://blog.csdn.net/M_joy666/article/details/99082332