)
C++ 中為什么要有 new/delete?它們與 malloc/free 的聯系和區別是什么?C++ 之所以引入 new 和 delete,核心原因在于 malloc 和 free 是 C 語言標準庫提供的內存管理函數,僅負責原始堆內存的分配與釋放,不具備面向對象編程所必需的對象生命周期管理能力。C++ 的核心特性之一是類與對象,對象不僅僅是一塊連續內存,還包含構造與析構邏輯,malloc 只會分配一塊未初始化的裸內存,不會自動調用類的構造函數來初始化成員變量、申請子資源;free 只會回收內存空間,不會調用析構函數釋放對象持有的文件句柄、堆內存、網絡連接等資源,極易造成資源泄漏。new 和 delete 將內存空間分配、對象構造、內存回收、對象析構四個動作整合在一起,適配 C++ 面向對象的設計范式,同時兼容基礎內置類型的內存管理,是 C++ 原生的內存管理機制。malloc 和 free 由 stdlib.h 提供,屬于庫函數,new 和 delete 是 C++ 內置運算符,編譯器直接識別處理,不是普通函數調用。二者存在底層聯系,默認情況下全局 new 底層實現會調用 malloc 申請內存,全局 delete 底層會調用 free 回收內存,但這個關聯不是強制綁定的,開發者可以重載全局 new/delete 或者類專屬的 operator new/operator delete,替換底層內存分配邏輯,不再依賴 malloc/free。在核心差異層面,首先是處理對象生命周期的能力,new 分配內存后自動調用構造函數初始化對象,delete 釋放內存前自動調用析構函數清理資源;malloc 僅分配未經初始化的原始內存塊,free 直接回收內存,不會執行任何構造、析構邏輯。其