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

C/C++ 指標與記憶體管理常見問題彙整

     編輯:關於C++

指標操作是 C/C++ 開發的核心難點。本文整理九大常見問題,涵蓋 delete 語意、new/delete 與 malloc/free 混用風險、陣列配置釋放、delete this 條件、多維陣列配置、限制物件只能動態配置等實務技巧。

關鍵問答摘要

  1. delete p 刪除的是指向的資料,非指標本身。
  2. 不可混用:free() 不能釋放 new 記憶體,delete 不能釋放 malloc() 記憶體。
  3. new 優勢:呼叫建構子、型別安全、可被類別覆寫(operator new)。
  4. 無 realloc 對應:realloc 以 bitwise 複製會破壞 C++ 物件語意。
  5. 陣列配置必配對:new T[n] 對應 delete[] p,漏寫 [] 會導致堆積損毀。
  6. delete this 條件:物件必須由 new 配置、為最後一次呼叫、事後不得存取 this。
  7. 多維陣列動態配置:可逐列配置指標陣列再配置各列資料,釋放時反向操作。
  8. 強制動態配置:將建構子設為 private,提供 static 工廠函式回傳 new 物件。

程式碼範例:工廠模式限制動態配置


class Fred {
public:
    static Fred* create() { return new Fred(); }
    static Fred* create(int i) { return new Fred(i); }
private:
    Fred(); Fred(int); Fred(const Fred&);
    virtual ~Fred();
};
int main() { Fred* p = Fred::create(5); delete p; }

掌握這些細節,能有效避免記憶體洩漏、雙重釋放、存取已釋放記憶體等經典錯誤。

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