C

Articoli tecnici organizzati per gruppo funzionale.

206 schede11 gruppiPagina 19 di 26

Puntatori e Gestione Memoria

8 nella pagina

Errore C: Memory Leak (Perdita di Memoria Heap)

Il programma alloca memoria dinamica con malloc, calloc o realloc senza deallocarla con free(), perdendo l'ultimo riferimento all'indirizzo e provocando il consumo progressivo della RAM di sistema.

MEMORY_LEAK_MALLOC
→

Errore C: Segmentation Fault in scanf() (Operatore '&' Mancante)

La funzione 'scanf("%d", &x)' si aspetta l'indirizzo di memoria della variabile in cui memorizzare il valore; passare 'x' senza '&' fa sì che il valore contenuto in 'x' venga interpretato come un puntatore, provocando la scrittura a un indirizzo casuale con crash SIGSEGV.

SCANF_MISSING_AMPERSAND
→

Errore C: Sovrapposizione di Memoria in memcpy() (Usare memmove())

La funzione 'memcpy(dest, src, n)' presuppone rigorosamente che le due aree di memoria non si sovrappongano; se i puntatori coincidono o condividono byte, i dati trasferiti vengono corrotti; per aree contigue o sovrapposte è obbligatorio usare 'memmove()'.

MEMCPY_OVERLAPPING
→

Errore C: Violazione delle Regole di Strict-Aliasing (Type Punning)

Il compilatore presuppone che puntatori a tipi differenti non puntino alla stessa locazione di memoria; convertire un 'int*' in 'float*' per leggerne la rappresentazione binaria consente al compilatore di riordinare le istruzioni generando bug silenti; il type punning sicuro si effettua tramite 'union' o 'memcpy()'.

STRICT_ALIASING_VIOLATION
→