Nederlandse leereditie
Segmentatiefout in C
Vind ongeldige geheugentoegang en herstel grenzen en objectlevensduur.

Een ongeïnitialiseerde pointer, een index buiten de grenzen of een vrijgegeven object kan ongeldige toegang veroorzaken. Het gedrag is ongedefinieerd: een zichtbare segmentatiefout treedt niet gegarandeerd bij elke uitvoering op.
Verklein het programma tot een minimaal reproduceerbaar geval. Controleer grenzen, het resultaat van malloc en de levensduur van elk object. Geef niet het adres van een automatische lokale variabele terug wanneer de functie eindigt.
Een debugger of AddressSanitizer kan de foutieve toegang aanwijzen als de omgeving dit ondersteunt. Herstel de oorzaak en test ook lege gevallen en grensgroottes.
Broncode
#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;
}Openen in de compilerVeelgestelde vragen
Waarom blijven code en sommige resultaten Engels?
C-sleutelwoorden, namen, programmacommentaar en verwachte uitvoer blijven gelijk aan het origineel om uitvoerbare code en consistente tests te behouden. Uitleg en instructies zijn vertaald.