Edizione didattica italiana
Errore di segmentazione in C
Individua accessi non validi e correggi limiti e durata degli oggetti.

Un puntatore non inizializzato, un indice fuori limite o un oggetto già liberato possono causare accessi non validi. Il comportamento è indefinito: un errore di segmentazione visibile non è garantito a ogni esecuzione.
Riduci il programma al minimo caso riproducibile. Controlla limiti, risultato di malloc e durata di ogni oggetto. Non restituire l’indirizzo di una variabile locale automatica quando la funzione termina.
Un debugger o AddressSanitizer può localizzare l’accesso errato se l’ambiente lo supporta. Correggi la causa e verifica anche casi vuoti e dimensioni limite.
Codice sorgente
#include <stdio.h>
int main(void)
{
int values[] = {10, 20, 30};
size_t count = sizeof values / sizeof values[0];
for (size_t i = 0; i < count; ++i) {
printf("values[%zu] = %d\n", i, values[i]);
}
return 0;
}Apri nel compilatoreDomande frequenti
Perché il codice e alcuni risultati restano in inglese?
Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.