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