Espacios de nombres
Variantes

std::weak_ptr::use_count

De cppreference.com
 
 
Biblioteca de servicios
 
Gestión de memoria dinámica
Punteros inteligentes
(C++11)
(C++11)
(C++11)
(hasta C++17)
(C++11)
(C++23)
Asignadores de memoria
Recursos de memoria
Almacenamiento no inicializado
Algoritmos de memoria no inicializada
Algoritmos restringidos de memoria no inicializada
Apoyo para recolección de basura
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
Misceláneos
(C++20)
(C++11)
(C++11)
 
 
<tbody> </tbody>
long use_count() const noexcept;
(desde C++11)

Devuelve el número de instancias de shared_ptr que comparten la posesión del objeto gestionado, o 0 si el objeto gestionado ya se eliminó, es decir, *this está vacío.

Parámetros

(Ninguno)

Valor de retorno

El número de instancias de shared_ptr que comparten la posesión del objeto gestionado en el instante de la llamada.

Notas

expired() puede ser más rápido que use_count(). Esta función es intrínsecamente susceptible a carreras de datos si el objeto gestionado se comparte entre hilos que podrían estar creando y destruyendo copias de shared_ptr: entonces, el resultado es confiable solo si coincide con la cantidad de copias de posesión exclusiva de la persona que llama hilo, o cero; cualquier otro valor puede volverse obsoleto antes de que pueda usarse.

Ejemplo

#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
}

Salida:

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: ??

Véase también

Comprueba si el objeto referenciado ya ha sido eliminado.
(función miembro pública) [editar]