我需要创建一个返回分配的 shared_ptr 变量的函数。这是正确的方法吗?
typedef boost::shared_ptr<std::vector<char> > sharePtr;
void createPtr(sharePtr &p)
{
p = sharePtr(new std::vector<char>);
}
void test()
{
sharePtr p;
createPtr(p);
}
最佳答案
是的,这是正确的。但为什么不只写:
sharedPtr createPtr()
{
return sharePtr(new std::vector<char>);
}
void test()
{
sharePtr p = createPtr();
}
?这可能比您的版本更快,如果使用支持移动语义的编译器,速度会更快。
还推荐使用make_shared
代替直接new
:
sharedPtr createPtr()
{
return make_shared<std::vector<char>>();
}
因为它可以避免为引用计数器分配内存。
关于c++ - 在函数中分配 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376708/