2018 3 13預習記憶體管理,預處理,結構體

2021-08-16 21:22:28 字數 608 閱讀 5330

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 ...