vault backup: 2022-06-06 10:54:20

Affected files:
02. PARA/03. Resources(資源)/C++17/智慧指標.md
This commit is contained in:
2022-06-06 10:54:20 +08:00
parent ac3233175b
commit a779779c22

View File

@@ -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