std::shared_ptr::use_count

std::shared_ptr::use_count

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

#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

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/memory/shared_ptr/use_count

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部