記憶體分部如下圖所示
記憶體分部
**段:存放指令
資料段:存放區域性變數、形參、全域性變數、靜態變數
靜態變數:定義時使用 static資料段:存放全域性變數、靜態變數關鍵字定義,只初始化一次,之後不會再被呼叫時不再初始化,如果在定義時不進行初始化,數型別自動初始化為0,字元型自動初始化為空字元,區域性靜態變數之作用於所屬區域性函式,但是所佔記憶體空間不會被釋放。
static 修飾的變數(靜態)變數作用範圍在該變數所在的最大範圍內。
static 全域性變數 —–只作用在該檔案程式中
static 區域性變數 —–只作用在該函式內
static 函式 —–該函式只能作用在該檔案程式中
資料段裡有.data .bss .rodata三段,其各段的作用如下堆:動態分配空間(malloc(),calloc(),realloc();).data 存放初始化的全域性變數和靜態變數
.bss 存放未初始化的全域性變數和靜態變數
.rodata 存放常量
記憶體從低位開始分配,空間使用完後,一定要使用free()釋放,如果不釋放,這空間一直存在到程式退出。
void *malloc(size_t size);向系統申請size個位元組的記憶體空間,返回所申請記憶體的起始指標位址,棧:存放區域性變數、形參void *calloc(size_t nmemb, size_t size); 申請空間 nmemb*size大小空間,自動清0。nmemb是申請空間的個數,size是申請記憶體的大小。
void *realloc(void *ptr, size_t size); 當初始申請的記憶體不夠用時,使用realloc調整空間大小。
自動分配記憶體,位址從高位開始,當區域性變數或形參生命結束時自動釋放
函式{}中定義的變數(區域性變數),一宣告好,系統自動分配乙個空間,當區域性變數生命一結束,系統自動把空間**。
形參:
int f(int a,int b)例:
test.c
-------------
struct a
;int a=4; //資料段.data
int c; //資料段.bss
嵌入式學習筆記
嵌入式系統定義 技術角度以應用為中心,以計算機技術為基礎,軟硬體可裁剪,應用系統對功能,可靠性,成本,體積,功耗,和應用環境有特殊要求的專用計算機系統系統角度 設計完成複雜功能的硬體和軟體並使其緊密契合在一起的計算機系統 實時在規定的時間內,完成規定的動作 紅帽linux 基本命令 ls 檢視當前目...
嵌入式學習筆記
1 3 買了兩本書鳥哥的 鳥哥的linux私房菜基礎學習篇 第三版 和偉山東的 嵌入式linux應用開發完全手 冊 暫時看不懂 4 看了王剛的 linux系統移植 第二版 實現了windows和linux虛擬機器的檔案的共享 2014 11 02 主機可以ping通虛擬機器,虛擬機器ping不通主機...
嵌入式Linux學習筆記(一)
一 安裝虛擬機器和ubuntu16.04 二 linux的主要目錄結構 bin 存放常用命令 boot 存放啟動程式 dev 存放裝置檔案 etc 存放啟動,關閉,配置程式與檔案 home 使用者工作跟目錄 lib 存放共享鏈結庫 root 超級使用者的工作目錄 sbin 系統管理員的常用管理程式 ...