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

C++ new 與 delete 完整指南:動態內存管理最佳實踐

     編輯:C++ 入門

核心概念

new 分配動態內存(堆),delete 釋放。必須配對使用,否則內存洩漏。new 返回指針,delete 接受指針。

三種主要用法

1. 動態數組

int *arr = new int[n]; // 分配 n 個 int
// 使用 arr[0]...arr[n-1]
delete[] arr; // 必須用 delete[]

數組長度可在運行時決定,釋放時需加 []。

2. 動態結構體/對象

struct Node { int val; Node* next; };
Node* p = new Node; // 分配單個對象
p->val = 10;
delete p; // 無 []

構造函數自動調用,delete 調用析構函數。

3. 基本類型單個對象

int* p = new int; *p = 42;
double* pd = new double; *pd = 3.14;
delete p; delete pd;

關鍵區別

類型分配釋放備註
數組new T[n]delete[] p需知道大小
單個對象new Tdelete p調用構造/析構
基本類型new intdelete p無構造函數

常見錯誤

  • 忘記 delete[] 用 delete 刪數組 → 未定義行為。
  • 雙重釋放 / 釋放後繼續使用 → 崩潰。
  • 異常拋出前未釋放 → 內存洩漏(建議用智能指針)。

現代 C++ 建議

優先使用 std::vector, std::unique_ptr, std::shared_ptr 管理生命週期,避免手動 new/delete。

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