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

C++ 跨函數 new/delete 內存管理:數組釋放必須用 delete[]

     編輯:程式設計疑難解答

場景

函數 point 中 new char[n] 分配動態數組,返回指針供 main 使用,用完後在 main 中釋放。

正確釋放方式

char* name = point(); // 獲取指針
// ... 使用 name
delete[] name; // 必須用 delete[] 釋放數組

關鍵規則

  • new Type 對應 delete ptr。
  • new Type[N] 對應 delete[] ptr。
  • 混用會導致未定義行為(僅釋放首元素、析構函數不完全調用、堆損壞)。

設計建議

  • 封裝類管理內存(RAII),析構函數自動 delete[]。
  • 或使用智能指針 std::unique_ptr<T[]> (C++11) 自動管理數組生命周期。
  • API 文檔明確標註「調用者負責釋放」及釋放方式。

跨函數內存傳遞雖合法,但易出錯,現代 C++ 推薦智能指針或容器替代裸指針。

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