如何使用智能指针替换char *?

时间:2018-12-12 19:26:57

标签: c++ smart-pointers

我必须公开一个采用char *作为输入参数的API。 char *指向堆上的一堆二进制数据。在这种情况下,调用者必须管理内存分配和删除。

有没有一种方法可以将shared_ptr用作输入参数,而不是原始指针。

void func(char* data)
{
   //some operation
}

1 个答案:

答案 0 :(得分:1)

如果func仅观察数据而没有更改,请接受const char *。调用者可以将指针存储在任何智能指针中,并使用get()函数来获取裸指针以传递给func

如果func更改了数据,我想从Rust窃取想法并传递std::unique_ptr并返回std::unique_ptr。调用者先放弃所有权,然后再返回指针的所有权,但也可能是完全不同的指针。没关系。

如果func必须修改数据并且必须接受char *,则只需像以前一样从所需的任何智能指针中使用get()。只要func不将指针存储在任何地方都不会中断。