溫馨提示×

如何正確釋放C++中使用new分配的內(nèi)存

c++
小樊
83
2024-09-13 02:54:48
欄目: 編程語言

在C++中,使用new關(guān)鍵字分配的內(nèi)存需要手動釋放

  1. 對于單個(gè)變量:
int* ptr = new int; // 分配內(nèi)存
// ... 使用ptr做一些操作 ...
delete ptr; // 釋放內(nèi)存
  1. 對于數(shù)組:
int* arr = new int[10]; // 分配內(nèi)存
// ... 使用arr做一些操作 ...
delete[] arr; // 釋放內(nèi)存
  1. 對于自定義類或結(jié)構(gòu)體:
class MyClass {
    // ... 類的定義 ...
};

MyClass* obj = new MyClass; // 分配內(nèi)存
// ... 使用obj做一些操作 ...
delete obj; // 釋放內(nèi)存
  1. 對于智能指針(推薦):

智能指針會在離開作用域時(shí)自動釋放內(nèi)存,這樣可以防止內(nèi)存泄漏。

#include <memory>

std::unique_ptr<int> ptr(new int); // 分配內(nèi)存
// ... 使用ptr做一些操作 ...
// 不需要手動釋放內(nèi)存,當(dāng)ptr離開作用域時(shí)會自動釋放

請注意,在釋放內(nèi)存后,務(wù)必將指針設(shè)置為nullptr,以避免懸空指針(dangling pointer)問題。

int* ptr = new int;
delete ptr;
ptr = nullptr; // 避免懸空指針

0