std::unique_ptr 是 C++11 引入的一種智能指針類型,用來管理動態(tài)分配的內(nèi)存。與其他智能指針類型不同,unique_ptr 一個指針只能管理一塊內(nèi)存,并且它不支持復(fù)制和賦值操作,因此它也被稱為“獨占指針”。
下面是 unique_ptr 的一些主要特點:
獨占所有權(quán):每個 unique_ptr 實例獨占所指向?qū)ο蟮乃袡?quán),即一個對象只能被一個實例所擁有。
自動釋放內(nèi)存:當一個 unique_ptr 實例離開其作用域時,它所管理的內(nèi)存會被自動釋放。
無復(fù)制和賦值:unique_ptr 禁止復(fù)制和賦值操作的發(fā)生,從而避免了所有權(quán)的二義性。
支持移動語義:unique_ptr 可以通過移動語義轉(zhuǎn)移所有權(quán),即將一個 unique_ptr 對象的所有權(quán)移動給另一個 unique_ptr 對象。
下面是一個使用 unique_ptr 的簡單示例:
#include <iostream>
#include <memory>
int main() {
std::unique_ptr<int> ptr(new int(42)); // 創(chuàng)建一個包含值為 42 的 int 類型的 unique_ptr
std::cout << *ptr << std::endl; // 輸出 42
*ptr = 100; // 修改所指向的值
std::cout << *ptr << std::endl; // 輸出 100
// 當 ptr 離開作用域時,所指向的內(nèi)存會被自動釋放
return 0;
}
值得注意的是,在使用 unique_ptr 所管理的內(nèi)存時,應(yīng)該避免直接使用裸指針操作,而是應(yīng)該使用 unique_ptr 的成員函數(shù)進行操作,以確保內(nèi)存的正確釋放和管理。