如何把static std::unique_ptr<uint8_t[]> new_extradata(new uint8_t[new_extradata_size]); 赋值给cp->extradata 一份
时间: 2024-03-02 14:52:18 浏览: 20
假设cp->extradata是一个指向uint8_t类型的指针,可以使用std::memcpy函数将new_extradata指向的数据拷贝到cp->extradata指向的内存中,代码如下:
```
std::memcpy(cp->extradata, new_extradata.get(), new_extradata_size);
```
需要注意的是,如果cp->extradata之前申请的内存空间不够大,需要先释放之前的内存空间再重新申请足够大小的内存空间。
相关问题
如何把static std::unique_ptr<uint8_t[]> new_extradata(new uint8_t[new_extradata_size]); 赋值给cp->extradata
假设`cp`是一个指向某个结构体的指针,其中包含了一个名为`extradata`的`uint8_t`类型的指针,要将`new_extradata`数组赋值给`cp->extradata`,可以使用以下代码:
```
cp->extradata = new_extradata.get();
```
其中,`get()`函数可以获取`new_extradata`指向的内存块的指针。通过将该指针赋值给`cp->extradata`,可以让`cp->extradata`指向`new_extradata`所管理的内存块。需要注意的是,`new_extradata`所管理的内存块必须保证在`cp->extradata`被使用期间一直有效,否则可能会导致未定义的行为。
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`指向新的内存块,并自动释放原先分配的内存块。
阅读全文