boostshared-ptrrefcounting

boost shared ptr makes copy when changing undelying object?


Does boost::shared_ptr<int> ptr makes a copy when

*ptr.get() = 5;

suppose, the refcount was 3, after the line above will it stay 3 ? or what will happen? will the new object be allocated?


Solution

  • No, it won't copy, because then the object would no longer be shared.

    Also, no need for explicit call to get():

    *ptr = 5;
    

    This has no effect on refcount.

    (To create a new shared object: ptr = boost::make_shared<int>(5))