首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

malloc 使用新認知:六大陷阱與正確釋放模式

     編輯:關於C語言

malloc 使用新認知:六大陷阱與正確釋放模式

在子函式中 malloc 後 free 發生異常,排查發現指標操作超出配置範圍。總結六大注意事項:

  1. 不可重複 free:配對使用,第一次 free 後指標變野指標,二次 free 行為未定義。
  2. 跨程序配置/釋放不可行;免重複或零次 free;檢查配置是否成功。
  3. 指標歸零防呆:malloc 失敗、free 後、free 前皆將指標設為 NULL。free(NULL) 安全無害。
  4. 函式內 malloc 回傳指標亦需 free:呼叫端負責釋放。
  5. 指標不可改變指向:如 p++ 後 free(p) 傳入非首址,必崩潰。free 需首址。
  6. 實際使用不得超出配置大小:申請 100 位元組卻寫入 101,free 時堆積損毀拋錯誤。

標準安全範例

char *Ptr = NULL;
Ptr = (char *)malloc(100 * sizeof(char));
if (NULL == Ptr) exit(1);
gets(Ptr);
// ... 使用 ...
free(Ptr);
Ptr = NULL;

掌握「配對、歸零、不越界、不改指向」四原則,malloc/free 並不難用。

參考回答:知乎連結

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved