allocate shared_ptr in a function
c++, smart-pointers
Solution
Yes, it is correct. But why not write just:
sharedPtr createPtr()
{
return sharePtr(new std::vector<char>);
}
void test()
{
sharePtr p = createPtr();
}
? This can be faster than your version, and faster even more with a compiler supporting move semantics.
It's also recommended to use `make_shared` instead of direct `new`:
sharedPtr createPtr()
{
return make_shared<std::vector<char>>();
}
because it can avoid the memory allocation for the reference counter.
Problem
I need to create a function that returns an allocated shared_ptr variable. is this the correct way? ``` typedef boost::shared_ptr<std::vector<char> > sharePtr; void createPtr(sharePtr &p) { p = sharePtr(new std::vector<char>); } void test() { sharePtr p; createPtr(p); } ```