debil_ptr, make_shared y memoria desasignación

Un bloque de control de unshared_ptr se mantiene vivo mientras hay al menos unoweak_ptr presente. Si el puntero compartido se creó conmake_shared eso implica que toda la memoria del objeto se mantiene asignada. (El objeto en sí mismo se destruye correctamente, pero dado que el bloque de control y la memoria para el objeto se asignaron en un fragmento, comomake_shared sí, solo se pueden desasignar juntos).

¿Es correcto mi entendimiento?

Parece que este comportamiento representa un problema, por ejemplo en el famoso"ejemplo de caché". La memoria para los objetos se mantendrá asignada para siempre.

¿Es un problema en alguna situación práctica? ¿Deberá elshared_ptr ser creado usando un constructor en tal situación (objeto grande e intención de usarweak_ptrs)?