Namespaces
Variants

std::weak_ptr<T>:: use_count

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
long use_count ( ) const noexcept ;
(C++11 이후)

관리되는 객체의 소유권을 공유하는 shared_ptr 인스턴스의 수를 반환하거나, 관리되는 객체가 이미 삭제된 경우(즉 * this 가 비어 있는 경우) 0 을 반환합니다.

목차

매개변수

(없음)

반환값

관리되는 객체의 소유권을 공유하는 shared_ptr 인스턴스의 개수 (호출 시점 기준).

참고 사항

이 함수의 사용법과 동작은 std::shared_ptr::use_count 와 유사하지만, 다른 카운트를 반환합니다.

예제

#include <iostream>
#include <memory>
std::weak_ptr<int> gwp;
void observe_gwp()
{
    std::cout << "use_count(): " << gwp.use_count() << "\t id: ";
    if (auto sp = gwp.lock())
        std::cout << *sp << '\n';
    else
        std::cout << "??\n";
}
void share_recursively(std::shared_ptr<int> sp, int depth)
{
    observe_gwp(); // : 2 3 4
    if (1 < depth)
        share_recursively(sp, depth - 1);
    observe_gwp(); // : 4 3 2
}
int main()
{
    observe_gwp();
    {
        auto sp = std::make_shared<int>(42);
        gwp = sp;
        observe_gwp(); // : 1
        share_recursively(sp, 3); // : 2 3 4 4 3 2
        observe_gwp(); // : 1
    }
    observe_gwp(); // : 0
}

출력:

use_count(): 0   id: ??
use_count(): 1   id: 42
use_count(): 2   id: 42
use_count(): 3   id: 42
use_count(): 4   id: 42
use_count(): 4   id: 42
use_count(): 3   id: 42
use_count(): 2   id: 42
use_count(): 1   id: 42
use_count(): 0   id: ??

참고 항목

참조된 객체가 이미 삭제되었는지 확인합니다
(public member function)