我有一个函数foo
,它以std::vector<char>
作为参数,并调用另一个以bar
为参数的函数std::shared_ptr<char>
。
void foo(std::vector<char> arg)
{
bar(?) // what do i pass to bar here?
}
void bar(std::shared_ptr<char> arg)
{
// do something asynchronously
}
如何将向量的基础数组的所有权转移到shared_ptr?
向量很大(4MB),所以我想避免从向量复制到另一个char数组。
答案 0 :(得分:5)
你做不到。除了将矢量移动到另一个矢量之外,没有办法释放矢量对其内存的所有权。
如果您可以修改bar
以取std::vector<char>
,那么您可以通过移动向量来转移所有权,而无需复制它。