fraca_ptr, make_shared e desalocação de memória

Um bloco de controle de umshared_ptr é mantido vivo enquanto houver pelo menos umweak_ptr presente. Se o ponteiro compartilhado foi criado commake_shared isso implica que toda a memória do objeto seja mantida alocada. (O objeto em si é destruído adequadamente, mas como o bloco de controle e a memória do objeto foram alocados em um pedaço, comomake_shared só podem ser desalocados juntos.)

Meu entendimento está correto?

Parece que esse comportamento representa um problema, por exemplo, no famoso"exemplo de cache". A memória dos objetos será mantida alocada para sempre.

É um problema em qualquer situação prática? Deve oshared_ptr ser criado usando um construtor em tal situação (objeto grande e intenção de usarweak_ptrs)?

questionAnswers(2)

yourAnswerToTheQuestion