Almindelige runtime-fejl
Identificér og forebyg segmentation faults, buffer-overløb og memory leaks
Almindelige runtime-fejl er en gratis C Academy-lektion på CoddyKit. Dette er lektion 2 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C Academy-kurset indeholder 3 lektioner i alt.
Almindelige kørselsfejl i C
Kørselsfejl opstår, når et program støder på uventet adfærd, som ofte får det til at gå ned.
I denne lektion lærer du:
- Hvordan segmenteringsfejl opstår, og hvordan du retter dem.
- Hvordan bufferoverløb fører til sikkerhedssårbarheder.
- Hvordan hukommelseslækager påvirker ydeevnen, og hvordan du undgår dem.

Hvad er en segmenteringsfejl?
En segmenteringsfejl opstår, når et program forsøger at få adgang til hukommelse, som det ikke har tilladelse til at tilgå.
Årsager:
- Dereferering af en ikke-initialiseret eller NULL-peger.
- Adgang til hukommelse uden for et arrays grænser.
- Ændring af skrivebeskyttet hukommelse.
Eksempel: Segmenteringsfejl
Dette program forårsager en segmenteringsfejl ved at dereferere en NULL-peger.
#include <stdio.h>
int main() {
int *ptr = NULL;
printf("%d\n", *ptr); // Segmentation fault
return 0;
}Forebyggelse af segmenteringsfejl
Tip til at undgå segmenteringsfejl:
- Initialisér altid pegere, før du bruger dem.
- Kontrollér, om en peger er NULL, før du derefererer den.
- Brug kontrol af arraygrænser.
Hvad er et bufferoverløb?
Et bufferoverløb opstår, når data overskrider den tildelte hukommelsesplads.
Eksempel:
char arr[5]; gets(arr);
Det kan føre til uforudsigelig adfærd og sikkerhedssårbarheder.
Eksempel: Bufferoverløb
Dette program demonstrerer et bufferoverløb ved hjælp af 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;
}Forebyggelse af bufferoverløb
Sådan forebygger du bufferoverløb:
- Brug
fgets()i stedet forgets(). - Validér inddataenes størrelse, før du skriver til arrays.
- Brug hukommelsessikre funktioner som
snprintf().
Hukommelseslækager
En hukommelseslækage opstår, når tildelt hukommelse ikke frigives, hvilket fører til spild af hukommelse.
Årsager:
- At du glemmer at bruge
free()eftermalloc(). - At du overskriver en peger uden at frigive den gamle tildeling.
Opsummering
I denne lektion har du lært:
- Hvordan segmenteringsfejl opstår, og hvordan du forebygger dem.
- Hvordan bufferoverløb fører til sikkerhedsproblemer.
- Hvordan hukommelseslækager spilder systemressourcer.
Dernæst undersøger vi strategier til undtagelseshåndtering i C!

Lær C med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 39
- Lektioner
- 144
Ofte stillede spørgsmål
Er lektionen “Almindelige runtime-fejl” gratis?
Ja — hele teksten til “Almindelige runtime-fejl” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C Academy-kurset, skal du opgradere til CoddyKit PRO. C Academy-kurset indeholder 3 lektioner i alt.
Hvad lærer jeg i “Almindelige runtime-fejl”?
Identificér og forebyg segmentation faults, buffer-overløb og memory leaks Du øver dig i C Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C Academy?
Der kræves ingen tidligere erfaring. C Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 3.
Hvor lang tid tager lektionen “Almindelige runtime-fejl”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C Academy-lektion?
Ja. Alle C Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Fejlfinding med GDB
- Almindelige runtime-fejl
- Exception handling i C