記憶體管理,結構體

2021-08-15 05:08:43 字數 848 閱讀 9351

1.如何防止記憶體分配不成功,卻錯誤的使用記憶體?

使用前用if(p==null)來防錯

2.使用free釋放記憶體後,需要將指標置null嗎

需要,不然會產生野指標

3.出現段錯誤的原因?

訪問了錯誤的記憶體段,一般是你沒有許可權,或者根本就不存在對應的物理記憶體,常見的是訪問0位址

4.如何快速定位造成段錯誤的語句?

利用gcc -g -rdynamic test.c

gdb ./a.out

run5.指標與陣列的對比

不能對陣列名進行直接複製與比較,應用strcpy函式和strcmp函式

6.巨集定義的要點

(1)巨集定義不是說明或語句

(2)巨集定義必須寫在函式之外,其作用域為巨集定義命令起到程式結束

(3)巨集名在源程式中若用引號括起來,則預處理程式不對其進行巨集代換

(4)巨集定義允許巢狀

(5)對輸出格式作巨集定義

7.檔案包含中尖括號和雙引號的區別

使用尖括號表示在包含檔案目錄中查詢,而不在源檔案目錄中查詢

使用雙引號表示在當前的源檔案目錄中查詢,若未找到才到包含目錄中查詢

8.結構體與陣列的比較

都由多個元素組成

各個元素在記憶體中的儲存空間是連續的

陣列中各個元素的資料型別相同,而結構體中的各個元素的資料型別可以不相同

9.如何定義結構體?

typedef struct student

stu;

stu stu1 , *ps,stu[5];

10.define與typedef的區別

typedef只是為了增加可讀性而為識別符號另起的新名稱,而define是為了定義常量

記憶體管理 結構體

一.記憶體存放位置 全域性變數 靜態區域性變數儲存在全域性資料區,初始化的和未初始化的分別儲存在一起 普通區域性變數儲存在堆疊中 全域性變數和區域性變數在記憶體裡的區別?預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放...

DPDK記憶體管理一 結構體

dpdk的記憶體管理工作主要分布在幾個大的部分 大頁初始化與管理,記憶體管理。使用大頁可以減少頁表開銷,是為了儘量減少tbl miss導致的效能損失。基於大頁,dpdk又進一步細化管理這部分記憶體,使得分配,更加方便。大頁記憶體的基本原理在前面已經解釋過了,這裡就不在繼續。the structure...

記憶體管理 預處理與結構體

1.未初始化的全域性變數 bss段 用來存放那些沒有初始化和初始化為零的全域性變數。2.初始化過的全域性變數 data 裡面存放那些初始化為非零的全域性變數。3.常量資料 rodata段 ro代表ready only,rodata就是用來存放常量資料的。在多個程序是共享的,這樣可以提高執行空間利用率...