vault backup: 2022-06-06 10:54:20
Affected files: 02. PARA/03. Resources(資源)/C++17/智慧指標.md
This commit is contained in:
@@ -26,5 +26,28 @@ auto bigBuf = std::make_unique<BigBuffer>(bufferSize);
|
|||||||
```cpp
|
```cpp
|
||||||
bigBuf.reset(std::make_unique<BigBuffer>(bufferSizeLarger));
|
bigBuf.reset(std::make_unique<BigBuffer>(bufferSizeLarger));
|
||||||
```
|
```
|
||||||
|
這時候舊指標會自動delete,然後指向新的指標(如果記憶體分配有成功的話),或者指向nullptr(記憶體分配失敗)。
|
||||||
|
如果單純想要釋放指標,那就單純的reset就好。
|
||||||
|
```cpp
|
||||||
|
bigBuf.reset(); // Now I'm nullptr
|
||||||
|
```
|
||||||
|
|
||||||
|
如果要分配陣列的話:
|
||||||
|
```cpp
|
||||||
|
auto intArray = std::make_unique<int[]>(1024);
|
||||||
|
```
|
||||||
|
|
||||||
|
使用方式也是一樣的:
|
||||||
|
```cpp
|
||||||
|
intArray[5] = 555;
|
||||||
|
```
|
||||||
|
|
||||||
|
不過對於陣列的操作現在更建議使用std::array。
|
||||||
|
|
||||||
|
如果有什麼特殊原因讓你決定不再讓unique_ptr蘭幫你管理指標,可以用`release`來讓出指標:
|
||||||
|
```cpp
|
||||||
|
auto intArray = std::make_unique<int[]>(1024);
|
||||||
|
int* intArrayRaw =
|
||||||
|
```
|
||||||
|
|
||||||
## shared_ptr
|
## shared_ptr
|
||||||
Reference in New Issue
Block a user