static std::unique_ptr<uint8_t[]> new_extradata;如何初始化
时间: 2024-03-02 12:50:29 浏览: 157
在 C++11 中,你可以使用以下方式初始化 `std::unique_ptr`:
1. 使用 `new` 运算符手动分配内存,并将返回的指针传递给 `std::unique_ptr` 的构造函数:
```cpp
static std::unique_ptr<uint8_t[]> new_extradata(new uint8_t[1024]);
```
这里我们手动分配了 1024 字节的内存,并将返回的指针传递给 `new_extradata` 的构造函数,使得 `new_extradata` 管理这段内存。需要注意的是,`std::unique_ptr` 会默认使用 `delete[]` 来释放数组类型的内存,因此不需要指定删除器。
2. 使用 `std::make_unique` 函数:
```cpp
static auto new_extradata = std::make_unique<uint8_t[]>(1024);
```
这里我们使用 `std::make_unique` 函数来创建一个 `std::unique_ptr` 对象,并初始化为一个 `uint8_t` 类型的数组。需要注意的是,这里需要指定数组的大小,即 `1024`。
相关问题
static int new_extradata_size = 1024 * 2; static std::unique_ptr<uint8_t[]> new_extradata(new uint8_t[new_extradata_size]); 如何重新初始化new_extradata
要重新初始化`new_extradata`数组,可以使用以下代码:
```
new_extradata.reset(new uint8_t[new_extradata_size]);
```
这将释放原先分配的内存,并分配一个新的大小为`new_extradata_size`的内存块。通过调用`reset`函数,可以将`new_extradata`指向新的内存块,并自动释放原先分配的内存块。
static int new_extradata_size = 1024 * 2; static std::unique_ptr<uint8_t[]> new_extradata; 如何初始化
在 C++11 中,你可以使用以下方式初始化这两个变量:
```cpp
static int new_extradata_size = 1024 * 2;
static std::unique_ptr<uint8_t[]> new_extradata(new uint8_t[new_extradata_size]);
```
这里我们先将 `new_extradata_size` 初始化为 `1024 * 2`,即需要分配的内存大小。然后,我们使用 `new` 运算符手动分配内存,并将返回的指针传递给 `std::unique_ptr` 的构造函数,使得 `new_extradata` 管理这段内存。需要注意的是,`std::unique_ptr` 会默认使用 `delete[]` 来释放数组类型的内存,因此不需要指定删除器。
阅读全文