Vanlige kjøretidsfeil
Identifiser og unngå segmenteringsfeil, bufferoverskridelser og minnelekkasjer.
Vanlige kjøretidsfeil er en gratis leksjon i C Academy på CoddyKit. Dette er leksjon 2 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C Academy inneholder totalt 3 leksjoner.
Vanlige kjøretidsfeil i C
Kjøretidsfeil oppstår når et program får uventet oppførsel, og fører ofte til krasj.
I denne leksjonen lærer du:
- Hvordan segmenteringsfeil oppstår, og hvordan de kan løses.
- Hvordan bufferoverskridelser fører til sikkerhetssårbarheter.
- Hvordan minnelekkasjer påvirker ytelsen, og hvordan de kan unngås.

Hva er en segmenteringsfeil?
En segmenteringsfeil oppstår når et program prøver å få tilgang til minne det ikke har tillatelse til å bruke.
Årsaker:
- Dereferering av en uinitialisert eller NULL-peker.
- Tilgang til minne utenfor grensene til en tabell.
- Endring av skrivebeskyttet minne.
Eksempel: Segmenteringsfeil
Dette programmet forårsaker en segmenteringsfeil ved å dereferere en NULL-peker.
#include <stdio.h>
int main() {
int *ptr = NULL;
printf("%d\n", *ptr); // Segmentation fault
return 0;
}Forhindre segmenteringsfeil
Tips for å unngå segmenteringsfeil:
- Initialiser alltid pekere før de brukes.
- Kontroller om en peker er NULL før den derefereres.
- Kontroller grensene for tabeller.
Hva er en bufferoverskridelse?
En bufferoverskridelse oppstår når data overskrider den tildelte minneplassen.
Eksempel:
char arr[5]; gets(arr);
Dette kan føre til uforutsigbar oppførsel og sikkerhetssårbarheter.
Eksempel: Bufferoverskridelse
Dette programmet demonstrerer en bufferoverskridelse ved hjelp av 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;
}Forhindre bufferoverskridelser
Slik forhindrer du bufferoverskridelser:
- Bruk
fgets()i stedet forgets(). - Valider størrelsen på inndata før du skriver til tabeller.
- Bruk minnesikre funksjoner som
snprintf().
Minnelekkasjer
En minnelekkasje oppstår når tildelt minne ikke frigjøres, noe som fører til sløsing med minne.
Årsaker:
- Glemme å bruke
free()ettermalloc(). - Overskrive en peker uten å frigjøre den gamle tildelingen.
Oppsummering
I denne leksjonen lærte du:
- Hvordan segmenteringsfeil oppstår, og hvordan de kan forhindres.
- Hvordan bufferoverskridelser fører til sikkerhetsproblemer.
- Hvordan minnelekkasjer sløser med systemressurser.
Deretter skal vi se på strategier for unntakshåndtering i C!

Lær deg C med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 39
- Leksjoner
- 144
Ofte stilte spørsmål
Er leksjonen «Vanlige kjøretidsfeil» gratis?
Ja – hele teksten i «Vanlige kjøretidsfeil» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C Academy inneholder totalt 3 leksjoner.
Hva lærer jeg i «Vanlige kjøretidsfeil»?
Identifiser og unngå segmenteringsfeil, bufferoverskridelser og minnelekkasjer. Du øver på C Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med C Academy?
Ingen tidligere erfaring er nødvendig. C Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 3.
Hvor lang tid tar leksjonen «Vanlige kjøretidsfeil»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne C Academy-leksjonen?
Ja. Alle C Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Feilsøking med GDB
- Vanlige kjøretidsfeil
- Unntakshåndtering i C