Espacios de nombres
Variantes
Acciones

std::weak_ptr::use_count

De cppreference.com
< cpp‎ | memory‎ | weak ptr
 
 
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)
 
 
long use_count()constnoexcept;
(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.

Contenido

[editar]Parámetros

(Ninguno)

[editar]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.

[editar]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.

[editar]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';elsestd::cout<<"??\n";}   void share_recursively(std::shared_ptr<int> sp, int depth){ observe_gwp();// : 2 3 4if(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: ??

[editar]Véase también

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