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

高品質 C++/C 程式設計指南 第 7 章 (七):new/delete 使用要點與指針心法

     編輯:關於C++

7.11 new/delete 核心優勢

// malloc 版:手動 sizeof、強制轉型、無型別檢查
int* p1 = (int*)malloc(sizeof(int) * length);

// new 版:內建 sizeof、型別安全、自動呼叫建構函數
int* p2 = new int[length];

對非內建型別,new **同時完成分配與初始化** (呼叫建構函數)。

多建構函數對應多種 new 形式

class Obj {
public:
    Obj();      // 預設
    Obj(int x); // 參數化
};

Obj* a = new Obj;       // 呼叫 Obj()
Obj* b = new Obj(1);    // 呼叫 Obj(1),初值為 1

陣列 new 的限制

Obj* objects = new Obj[100]; // ✅ 僅能呼叫預設建構函數
// Obj* objects = new Obj[100](1); // ❌ 語法非法,無法指定參數

delete 陣列:方括號不可漏

delete [] objects; // ✅ 正確:逐一呼叫 100 個解構函數
delete objects;    // ❌ 錯誤:相當於 delete objects[0],漏掉 99 個 → 記憶體洩漏 + 資源未釋放

7.12 指針與記憶體管理心法

「越怕指針,越要用指針。不會正確用指針,絕非合格程式設計師。」

「養成『逐步除錯追蹤』習慣,唯有此法能見問題本質。」

作者親歷:首個專案 1 萬行 C 碼**零指針** (全用陣列硬繞),後重寫代碼量減半。指針是 C/C++ 靈魂,**直面恐懼、刻意練習、工具加持**,方能馭之。

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