'std::make_shared' alloca l'oggetto e il blocco di controllo dei riferimenti in un unico blocco contiguo di memoria; sebbene l'oggetto venga distrutto quando lo shared_ptr scade, la memoria fisica non può essere deallocata finché esiste anche un solo 'std::weak_ptr' attivo.
MAKE_SHARED_WEAK_PTR_OVERHEAD
→
Invocare 'shared_from_this()' all'interno del costruttore di una classe derivata da 'std::enable_shared_from_this' fallisce perché la gestione tramite 'std::shared_ptr' non è ancora stata completata dal chiamante esterno.
SHARED_FROM_THIS_FAIL
→
L'eccezione viene sollevata quando si tenta di costruire un 'std::shared_ptr' a partire da un 'std::weak_ptr' il cui oggetto sottostante è già stato distrutto (expired).
STD_BAD_WEAK_PTR
→
Invocare 'std::move(ptr)' trasferisce la proprietà esclusiva della risorsa a un altro smart pointer, reimpostando l'oggetto originale su 'nullptr'; dereferenziarlo successivamente provoca crash immediato.
USE_AFTER_MOVE_PTR
→
I container che utilizzano allocatori polimorfici (PMR) dipendono dalla durata di vita del buffer di memoria sottostante (es. 'std::pmr::monotonic_buffer_resource'); se il resource esce dallo scope prima del container, qualsiasi deallocazione o ridimensionamento va in crash.
PMR_MEMORY_RESOURCE_LIFETIME
→
Similmente a string_view, 'std::span<T>' non estende la durata di vita del container sottostante: passargli un vettore temporaneo ('std::span<int> s = get_vector();') lascia lo span con un puntatore a memoria non più valida.
DANGLING_SPAN
→