Errori comuni durante l'esecuzione
Identifichi e prevenga errori di segmentazione, buffer overflow e memory leak.
Errori comuni durante l'esecuzione è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 3 lezioni in totale.
Errori di runtime comuni in C
Errori di runtime comuni in C
Gli errori di runtime si verificano quando un programma presenta un comportamento imprevisto, causando spesso un arresto anomalo.
In questa lezione imparerà:
- Come si verificano i segmentation fault e come correggerli.
- Come i buffer overflow causano vulnerabilità di sicurezza.
- Come i memory leak influiscono sulle prestazioni e come evitarli.

Che cos'è un segmentation fault?
Che cos'è un segmentation fault?
Un segmentation fault si verifica quando un programma tenta di accedere a una porzione di memoria per la quale non dispone delle autorizzazioni necessarie.
Cause:
- Dereferenziazione di un puntatore non inizializzato o NULL.
- Accesso alla memoria oltre i limiti di un array.
- Modifica di memoria di sola lettura.
Esempio: segmentation fault
Esempio: segmentation fault
Questo programma causa un segmentation fault dereferenziando un puntatore NULL.
#include <stdio.h>
int main() {
int *ptr = NULL;
printf("%d\n", *ptr); // Segmentation fault
return 0;
}Prevenire i segmentation fault
Prevenire i segmentation fault
Suggerimenti per evitare i segmentation fault:
- Inizializzi sempre i puntatori prima di utilizzarli.
- Verifichi che un puntatore non sia NULL prima di dereferenziarlo.
- Utilizzi il controllo dei limiti degli array.
Che cos'è un buffer overflow?
Che cos'è un buffer overflow?
Un buffer overflow si verifica quando i dati superano lo spazio di memoria allocato.
Esempio:
char arr[5]; gets(arr);
Questo può causare un comportamento imprevedibile e vulnerabilità di sicurezza.
Esempio: buffer overflow
Esempio: buffer overflow
Questo programma dimostra un buffer overflow utilizzando gets().
#include <stdio.h>
int main() {
char buffer[5];
printf("Enter a string: ");
gets(buffer); // Unsafe, may cause buffer overflow
printf("You entered: %s\n", buffer);
return 0;
}Prevenire i buffer overflow
Prevenire i buffer overflow
Per prevenire i buffer overflow:
- Utilizzi
fgets()invece digets(). - Convalidi le dimensioni dell'input prima di scrivere negli array.
- Utilizzi funzioni che gestiscono la memoria in modo sicuro, come
snprintf().
Memory leak
Memory leak
Un memory leak si verifica quando la memoria allocata non viene liberata, causando uno spreco di memoria.
Cause:
- Dimenticare di utilizzare
free()dopomalloc(). - Sovrascrivere un puntatore senza liberare la precedente allocazione.
Riepilogo
Riepilogo
In questa lezione ha imparato:
- Come si verificano i segmentation fault e come prevenirli.
- Come i buffer overflow causano problemi di sicurezza.
- Come i memory leak sprecano le risorse di sistema.
Successivamente analizzeremo le strategie di gestione delle eccezioni in C!

Domande Frequenti
La lezione «Errori comuni durante l'esecuzione» è gratuita?
Sì — il testo completo di «Errori comuni durante l'esecuzione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 3 lezioni in totale.
Cosa imparerò in «Errori comuni durante l'esecuzione»?
Identifichi e prevenga errori di segmentazione, buffer overflow e memory leak. Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C Academy?
Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.
Quanto tempo richiede la lezione «Errori comuni durante l'esecuzione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C Academy?
Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Debug con GDB
- Errori comuni durante l'esecuzione
- Gestione delle eccezioni in C