Online C Compiler
Openen in de compiler

Nederlandse leereditie

Voorbeeld van dynamisch geheugen in C

Gebruik malloc, calloc, realloc en free met correcte blokgroottes en levensduur.

Openen in de compiler

Voorbeeld van dynamisch geheugen in C
Gebruik malloc, calloc, realloc en free met correcte blokgroottes en levensduur.

malloc reserveert een blok met onbepaalde begininhoud. calloc reserveert meerdere elementen en zet de bytes op nul. Lees malloc-geheugen niet vóór initialisatie; nulbytes stellen niet universeel de nulwaarde van elk type voor.

Controleer het resultaat en bereken de grootte zonder overloop. Bewaar bij realloc de oorspronkelijke pointer tot succes: bij mislukking met een positieve grootte blijft het oude blok geldig.

Geef elk blok na gebruik één keer vrij. Gebruik het niet na free en geef geen automatisch geheugen of binnenadressen vrij. Echte programma’s moeten mislukte reserveringen afhandelen.

Broncode

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    size_t count = 4;
    int *scores = calloc(count, sizeof *scores);
    if (scores == NULL) {
        fputs("Allocation failed.\n", stderr);
        return 1;
    }

    scores[2] = 9;
    for (size_t i = 0; i < count; ++i) {
        printf("%d%s", scores[i], i + 1 == count ? "\n" : " ");
    }

    free(scores);
    return 0;
}
Openen in de compiler

Veelgestelde 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.