C程序在內存的分佈&關鍵字修飾變量

1.程序段

存放程序代碼的一段區域,程序段是隻讀的

2.數據段

存放已經初始化的全局變量,屬於靜態內存分配

3.bss段

BSS(Block Started by Symbol)存放程序中未初始化的全局變量和靜態變量

4.堆

保存進程中被動態分配的內存

       #include <stdlib.h>

       void *malloc(size_t size);
       void free(void *ptr);
       void *calloc(size_t nmemb, size_t size);
       void *realloc(void *ptr, size_t size);

5.棧

存儲程序中臨時創建的局部變量,函數調用,參數入棧,出棧過程也在棧中完成

6.static

靜態局部變量:局部變量的數值就是上一次調用之後的數值
靜態全局變量:只能在本程序中使用這個全局變量

7.register

寄存器變量:和編譯器相關,這個變量會被頻繁的使用,被保存到寄存器中,不能對寄存器變量取地址&

8.volatile

不穩定,易變的,使用volatile修飾的變量其數值可能會發生改變
使用場景:
多進程,多線程,共享數據
硬件寄存器0x12345678
一箇中斷服務子程序中使用的非自動變量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章