首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言指標賦值順序錯誤導致記憶體洩漏:正確釋放與重新指向流程

     編輯:程式設計綜合問答

錯誤代碼


int *pOld = malloc(sizeof(int));
int *pNew = malloc(sizeof(int));
pOld = pNew;      // 丟失 pOld 原本指向的記憶體
free(pOld);       // 實際釋放的是 pNew 的記憶體

正確順序


int *pOld = malloc(sizeof(int));
int *pNew = malloc(sizeof(int));
free(pOld);       // 先釋放舊記憶體
pOld = pNew;      // 再指向新記憶體
// 後續使用 pOld 即操作 pNew 那塊記憶體
// 最後 free(pOld) 即可

原則

  • 每個 malloc 必須有對應的 free。
  • 指標重新賦值前,必須先釋放原指向記憶體(或已有其他指標保存該位址)。
  • 釋放後將指標設為 NULL 可避免野指標。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved