1.linux虛擬位址空間
4g記憶體:1g核心空間和3g使用者空間;
使用者空間:資料段: 全域性資料 static靜態區
**段 : **,常量
棧: 區域性變數,形參
堆: malloc分配位址,realloc調整記憶體位址,free釋放記憶體位址;每個區間的四個屬性:r 唯讀,w修改,x 可執行,p/s 是否共享記憶體。free和malloc配套使用
2.通常用if(p!=null)進行放錯處理或者初始化指標來避免野指標。
3.出現段錯誤時可以用gdb逐步查詢段錯誤
4.終止巨集定義的作用域可以使用#undef命令
5.檔案包含:使用尖括號表示在包含檔案目錄中去查詢,不在源檔案目錄去查詢;使用雙引號表示首先在當前的源檔案目錄中查詢,未找到時才到包含目錄中去查詢
6.條件編譯:
一種形式:
#ifdef 識別符號
程式段1
#else
程式段2
#endif
7.##是連線符,將兩個token連線為乙個token
8.結構體命別名
typedef struct [student]
stu
記憶體管理 預處理與結構體
1.未初始化的全域性變數 bss段 用來存放那些沒有初始化和初始化為零的全域性變數。2.初始化過的全域性變數 data 裡面存放那些初始化為非零的全域性變數。3.常量資料 rodata段 ro代表ready only,rodata就是用來存放常量資料的。在多個程序是共享的,這樣可以提高執行空間利用率...
記憶體管理與預處理,結構體問題
1 bss段 直觀來說即存放沒有初始化或者初始化為0的全域性變數,一定是全域性變數。2 data 通俗來說 data段 和 bss 沒有太大的區別,只是前者是存放未初始化或者初始化為0的全域性變數,而後者是用來存放那些初始化不為0的全域性變數。注意 兩個都只是存放的全域性變數 3 段 直觀理解為函式...
預處理,結構體
q 巨集定義的定義和型別。a 巨集定義是由源程式中的巨集定義命令完成的,巨集代換是由預處理程式自動完成的,在 c語言中,巨集定義分為有參和無參兩種。無參巨集巨集名後不帶引數,其定義的一般形式為 define 識別符號 字串 帶參巨集的引數為形參,其一般形式為 define 巨集名 形參表 字串。q ...