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

高品質 C++/C 程式設計指南:new/delete 使用要點、陣列刪除陷阱與除錯心法

     編輯:VC 教學

new/delete 簡化記憶體管理


// 配置單一物件
int* p1 = new int;
Obj* obj = new Obj(10); // 呼叫建構子

// 配置陣列
int* arr = new int[100];
Obj* objs = new Obj[100]; // 僅呼叫無參建構子
  • 內建 sizeof、型別轉換、型別安全檢查。
  • 非 POD 型別自動呼叫建構子/解構子。

陣列刪除必須加 []


delete [] objs; // 正確:逐一呼叫解構子
delete objs;    // 錯誤:相當於 delete objs[0],其餘 99 個物件解構子不被呼叫 → 記憶體洩漏/資源外洩

多重建構子與 new


class Obj {
public: Obj(); Obj(int x); // 多載建構子
};
Obj* a = new Obj;     // Obj()
Obj* b = new Obj(1);  // Obj(1)

陣列 只能 使用無參建構子:new Obj[100](1) 編譯錯誤。

心得體會:直面指標與除錯器

  1. 越怕指標越要用指標:逃避指標只會寫出膨脹、低效的陣列模擬代碼。正確使用指標是合格程式設計師基本功。
  2. 養成「逐步除錯」習慣:唯有單步追蹤記憶體位址、指標值、堆疊變化,才能看清野指標、雙重釋放、越界存取的真相。

避坑清單

  • [ ] 每個 new 有對應 delete,new[] 對應 delete[]。
  • [ ] 解構子釋放資源,delete 觸發解構子。
  • [ ] 智慧指標(unique_ptr, shared_ptr)優於手動管理。
  • [ ] 除錯時監看指標位址、記憶體內容、呼叫堆疊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved