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就是用來存放常量資料的。在多個程序是共享的,這樣可以提高執行空間利用率...