C++ · Intermediário · Inglês · Técnico
shared pointer
std::shared_ptr é um smart pointer de posse compartilhada: vários donos mantêm uma contagem de referências e o objeto é destruído quando o último dono desaparece.
Onde usar
Usado quando o tempo de vida não tem um dono óbvio, como em callbacks ou caches. Em code review, abusar dele costuma esconder um design de posse mal definido.
Em código
auto a = std::make_shared<int>(5);
auto b = a; // contagem = 2
std::cout << a.use_count(); // 2
b.reset();
std::cout << a.use_count(); // 1Exemplos
Do we really need a shared pointer here, or would a unique pointer do?
Precisamos mesmo de um shared pointer aqui, ou um unique pointer resolve?
Two shared pointers pointing at each other will never free the memory.
Dois shared pointers apontando um para o outro nunca liberam a memória.
Cuidado
Ciclos entre shared_ptr nunca zeram a contagem e vazam memória; quebre o ciclo com weak_ptr.
Sinônimos
shared_ptr
Antônimos
unique pointer