Generelle retningslinjer
- Pass på at du har like mange free's som malloc's.
- Ha kontroll på pekerne dine: Hva peker de på? (stack eller heap?)
- Statisk minneallokasjon kan være mer hensiktsmessig enn dynamisk (se punkt 1).
- Husk å initialisere variabler før du bruker dem.
- Sjekk at du ikke forsøker å lese eller skrive utenfor allokert minne (se punkt 2). Pass på array-indekser.
- Gjør koden virkelig det du tror den gjør? Ta hensyn til warnings!
- Bruk verktøy som Valgrind og GDB.
Hva betyr...
-
error: dereferencing pointer to incomplete type.
Dette er en feilmelding GCC spytter ut og betyr som regel at du forsøker å bruke en struct som ikke er deklarert.
Husk alltid å inkludere headerfiler som inneholder funksjons- og struct-deklarasjoner. -
Conditional jump or move depends on uninitialised value(s)
Valgrind sier dette når du bruker en variabel som ikke er initialisert, dvs. at den ikke har fått en verdi.
Legg merke til at variabelen det er snakk om ikke alltid er i den siste funksjonen, men godt kan være sendt som argument til funksjonen.
Gjengående feil
Feil som går igjen i forhold til obligen og hjemmeeksamnene:
- Lengdeargumentet gitt til memset, memcpy og tilsvarende funksjoner er større enn det faktiske allokerte minnet, slik at man skriver over minnet til andre variable.