'std::initializer_list<T>' punta a un array temporaneo allocato sullo stack; memorizzarlo come membro di classe per riferimento o restituirlo da una funzione lascia un puntatore penzolante verso memoria deallocata.
DANGLING_REF_INIT_LIST
→
L'operatore standard 'new' fallisce e solleva l'eccezione 'std::bad_alloc' quando il gestore di memoria non è in grado di allocare la quantità di byte consecutivi richiesta sull'heap.
STD_BAD_ALLOC
→
'std::string_view' è un visualizzatore non proprietario: inizializzarlo con il risultato di una funzione che restituisce un 'std::string' per valore memorizza un puntatore al buffer della stringa temporanea, che viene deallocato al termine dell'istruzione.
DANGLING_STRING_VIEW
→
Utilizzare 'std::unique_ptr<T>' per gestire un array allocato con 'new T[N]' invoca 'delete ptr' anziché 'delete[] ptr', corrompendo l'heap di memoria e omettendo la distruzione degli elementi successivi.
DELETER_MISMATCH_ARRAY
→
Invocare 'delete ptr' su un array allocato con 'new Type[N]' invece di 'delete[] ptr' costituisce comportamento indefinito: impedisce l'invocazione dei distruttori per gli elementi dal secondo in poi e corrompe i metadati dell'allocatore.
DELETE_ARRAY_MISMATCH
→
Deallocare con 'delete base_ptr' un'istanza di una classe derivata attraverso un puntatore alla classe base priva di distruttore virtuale ('virtual ~Base()') genera comportamento indefinito e memory leak dei membri della classe derivata.
VIRTUAL_DESTRUCTOR_MISSING
→
Assegnare lo stesso puntatore nativo 'T *raw = new T;' a due istanze indipendenti di 'std::shared_ptr' anziché usare copy o 'std::make_shared' crea due blocchi di controllo separati, provocando una doppia deallocazione (double free) alla loro distruzione.
DOUBLE_DELETE_SMART_PTR
→
Quando due oggetti mantengono reciprocamente un 'std::shared_ptr' l'uno verso l'altro, il contatore di riferimenti non scende mai a zero e la memoria non viene mai deallocata; si risolve trasformando uno dei due riferimenti in 'std::weak_ptr'.
CIRCULAR_REF_SHARED_PTR
→