ExpertiDict

C++ · Intermediário · Inglês · Técnico

shared pointer

ʃɛɹd ˈpɔɪntɚsubstantivo

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();  // 1

Exemplos

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

Veja também

Todos os termos de C++