一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

c 智能指針的使用

 新潮技術(shù)研究社 2023-11-02 發(fā)布于北京
智能指針是一種 C++ 對(duì)象,用于管理動(dòng)態(tài)分配的內(nèi)存資源。智能指針的一個(gè)主要目標(biāo)是確保在任何情況下,包括異常,都能正確釋放動(dòng)態(tài)分配的內(nèi)存,防止內(nèi)存泄漏。C++ 提供了幾種類型的智能指針,包括 unique_ptr、shared_ptr 和 weak_ptr。

下面是這些智能指針的基本使用方法:

1. **unique_ptr**

`unique_ptr` 代表對(duì)動(dòng)態(tài)分配對(duì)象的獨(dú)占所有權(quán)。當(dāng) `unique_ptr` 離開(kāi)作用域或被重置時(shí),它所擁有的對(duì)象也會(huì)被自動(dòng)刪除。

```cpp
std::unique_ptr<int> ptr(new int(10));
```
也可以使用 `std::make_unique` 創(chuàng)建 `unique_ptr`:


```cpp
std::unique_ptr<int> ptr = std::make_unique<int>(20);
```
unique_ptr` 不支持復(fù)制,但支持移動(dòng)。

2. **shared_ptr**

`shared_ptr` 是一個(gè)引用計(jì)數(shù)的智能指針,用于共享所有權(quán)的場(chǎng)景。當(dāng)最后一個(gè)引用被銷毀時(shí),`shared_ptr` 所管理的對(duì)象也會(huì)被自動(dòng)刪除。


```cpp
std::shared_ptr<int> ptr1(new int(10));
std::shared_ptr<int> ptr2 = ptr1; // ptr1 和 ptr2 共享同一個(gè)對(duì)象
```
`shared_ptr` 使用 `std::make_shared` 創(chuàng)建:


```cpp
std::shared_ptr<int> ptr = std::make_shared<int>(20);
```

3. **weak_ptr**

`weak_ptr` 是一個(gè)不控制所指向?qū)ο笊嫫诘闹悄苤羔?,它指向?`shared_ptr` 管理的對(duì)象。其主要用途是解決循環(huán)引用的問(wèn)題,例如兩個(gè)對(duì)象相互引用,導(dǎo)致它們的生命周期無(wú)法正常結(jié)束。


```cpp
std::shared_ptr<int> ptr1(new int(10));
std::weak_ptr<int> ptr2 = ptr1; // ptr2 指向 ptr1 指向的對(duì)象,但不增加對(duì)象的引用計(jì)數(shù)
```
在 `weak_ptr` 有效期內(nèi),可以通過(guò) `lock` 方法獲取其指向的 `shared_ptr`,從而訪問(wèn)其管理的對(duì)象。但要注意,如果這個(gè)對(duì)象已經(jīng)被銷毀,`lock` 會(huì)返回一個(gè)空的 `shared_ptr`。

4. **unique_ptr 的自定義刪除器**

可以為 `unique_ptr` 自定義刪除器,以控制對(duì)象的刪除過(guò)程。例如:


```cpp
struct FooDeleter {
    void operator()(Foo* ptr) const { delete ptr; } // 使用 delete 刪除 Foo 類型的對(duì)象
};
std::unique_ptr<Foo, FooDeleter> ptr(new Foo); // 使用自定義刪除器的 unique_ptr
```

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩亚洲精品内裤| 又黄又爽禁片视频在线观看| 午夜精品黄片在线播放| 日韩欧美国产精品自拍| 亚洲国产黄色精品在线观看| 极品熟女一区二区三区| 熟妇久久人妻中文字幕| 麻豆视频传媒入口在线看| 国产一区二区三区草莓av| 欧美日韩国产亚洲三级理论片| 免费黄片视频美女一区| 国产精品成人免费精品自在线观看 | 爱草草在线观看免费视频| 日韩精品第一区二区三区| 我要看日本黄色小视频| 激情五月综五月综合网| 熟女免费视频一区二区| 日韩一区中文免费视频| 日本亚洲精品在线观看| 久久精品偷拍视频观看| 欧美成人免费视频午夜色| 亚洲丁香婷婷久久一区| 亚洲午夜av一区二区| 日本最新不卡免费一区二区| 亚洲国产中文字幕在线观看| 在线视频免费看你懂的| 国产香蕉国产精品偷在线观看| 粉嫩国产一区二区三区在线| 中文字幕一区二区免费| 久久国产成人精品国产成人亚洲| 美日韩一区二区精品系列| 亚洲欧美日本成人在线| 五月婷婷欧美中文字幕| 国产精品一区二区三区黄色片| 91超频在线视频中文字幕| 99在线视频精品免费播放| 中文字幕无线码一区欧美| 嫩呦国产一区二区三区av| 1024你懂的在线视频| av免费视屏在线观看| 精品视频一区二区三区不卡|