Ponteiro bruto de C ++ e std :: shared_ptr

Estou trabalhando comstd::shared_ptr e durante meu desenvolvimento de software, encontrei alguns casos que me permitiram duvidar do gerenciamento de memória. Eu tinha uma biblioteca de terceiros que me dava sempre ponteiros crus de funções e no meu código eu estava transformando-os emstd::shared_ptr (de std e não de boost. A propósito, qual é a diferença entre os dois?). Então, digamos que eu tenha o seguinte código:

ClassA* raw = new ClassA;
std::shared_ptr<ClassA> shared(raw);

O que acontece agora quando o ponteiro compartilhado sai do escopo (digamos que foi declarado localmente em uma função e agora estou saindo da função). Será que oClassA objeto ainda existe porque um ponteiro bruto está apontando para ele?

questionAnswers(3)

yourAnswerToTheQuestion