0 c++ memory arrays stl shared-ptr
我从函数中得到了 shared_ptr。共享 ptr 指向一个大的字节数组。我想返回这个 shared_ptr 但将它指向这个数组中的第 16 个字节。带有原始指针的示例(工作):
uint8_t* SomeFunction() {
uint8_t* array = SomeOtherFunction();
return array + 16;
}
Run Code Online (Sandbox Code Playgroud)
使用共享指针的示例(不起作用):
std::shared_ptr<uint8_t[]> SomeFunction() {
std::shared_ptr<uint8_t[]> array = SomeOtherFunction();
return array + 16;
}
Run Code Online (Sandbox Code Playgroud)
我不想重新分配数组,因为它很大而且重新分配需要时间。我想返回相同的共享 ptr,但它的get()
方法将返回raw pointer
+16。但在原始指针地址处释放内存。
我可以做吗?如何?
可以使用别名构造函数:
std::shared_ptr<uint8_t[]> SomeFunction() {
std::shared_ptr<uint8_t[]> array = SomeOtherFunction();
return {array, array.get() + 16};
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
109 次 |
最近记录: |