# std::shared_ptr::use_count

From cppreference.com
< cpp‎ | memory‎ | shared ptr

long use_count() const; |  |

Returns the number of different `shared_ptr` instances (this included) managing the current object. If there is no managed object, ​0​ is returned.

In multithreaded environment, the value returned by use_count is approximate (typical implementations use a memory_order_relaxed load)

### Parameters

(none)

### Return value

the number of `shared_ptr` instances managing the current object or ​0​ if there is no managed object.

### Exceptions

`noexcept` specification:
noexcept

### Notes

Common use cases include

- comparison with ​0​. If `use_count` returns zero, the shared pointer is empty and manages no objects (whether or not its stored pointer is null). However, this is not guaranteed in multithreaded environment.
- comparison with 1. If `use_count` returns 1, there are no other owners, which may indicate that the managed object is safe to modify. The member function unique() is provided for this use case. However, this is not guaranteed in multithreaded environment.

### Example

Run this code

    #include <memory>
    #include <iostream>

    void fun(std::shared_ptr<int> sp)
    {
        std::cout << "fun: sp.use_count() == " << sp.use_count() << '\n';
    }

    int main()
    {
        auto sp1 = std::make_shared<int>(5);
        std::cout << "sp1.use_count() == " << sp1.use_count() << '\n';

        fun(sp1);
    }

Output:

    sp1.use_count() == 1
    fun: sp.use_count() == 2

### See also

unique (deprecated) | checks whether the managed object is managed only by the current `shared_ptr` instance (public member function)

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/memory/shared_ptr/use_count&oldid=91447"
Category:

- unconditionally noexcept

Hidden categories:

- Pages with unreviewed unconditional noexcept template
- Pages with unreviewed noexcept template