Provided by:
manpages-nl_20051127-4_all
NAAM
calloc, malloc, free, realloc - Reserveren en vrijmaken van dynamisch
geheugen
BESCHRIJVING
#include <stdlib.h>
void *calloc(size_t n, size_t grootte);
void *malloc(size_t grootte);
void free(void *wzr);
void *realloc(void *wzr, size_t grootte);
BESCHRIJVING
calloc() Reserveert geheugen voor een tabel van n elementen van grootte
bytes elk, en geeft een wijzer naar het toegewezen geheugen terug. Het
geheugen wordt ge‘nul’d.
malloc() Reserveert grootte bytes geheugen en geeft een wijzer naar het
gereserveerde geheugen terug. Het geheugen wordt niet schoon gemaakt.
free() Maakt de geheugen-ruimte waar wzr naar wijst vrij, geheugen dat
gereserveerd moet zijn door een eerdere aanroep naar malloc(), calloc()
of realloc(). Anders, of als free(wzr) al eerder werd aangeroepen,
ontstaat onbepaald gedrag. Als wzr NULL is wordt niets gedaan.
realloc() Verandert de grootte van het geheugen-blok waar wzr naar
wijst in grootte bytes. De inhoud zal onveranderd blijven tot het min‐
imum van de oude en nieuwe maten; nieuw gereserveerd geheugen zal niet
worden geïnitialiseerd. Als wzr NULL is, is de aanroep gelijk aan mal
loc(grootte); als grootte gelijk aan nul is, is de aanroep gelijk aan
free(wzr). Tenzij wzr NULL is, moet het teruggegeven zijn door een
eerdere aanroep naar malloc(), calloc() of realloc().
Voor calloc() en malloc(), is de teruggegeven waarde een wijzer naar
het gereserveerde geheugen, dat geschikt is opgelijnd voor het soort
variabele, of NULL als de aanvraag mislukt.
free() Geeft geen waarde terug.
realloc() Geeft een wijzer naar het nieuw gereserveerde geheugen, wat
geschikt is opgelijnd voor de soort variabele. Het kan verschillen van
wzr. Het is NULL als de aanvraag mislukt, of als de grootte gelijk is
aan 0. Als realloc() niet slaagt blijft het originele blok onveranderd
- het wordt niet vrijgegeven of verplaatst.
ANSI-C
brk(2)
OPMERKINGEN
De Unix98 standaard vereist van malloc(), calloc(), en realloc() dat ze
errno naar ENOMEM zetten bij mislukken. Glibc neemt aan dat dit wordt
gedaan (en de glibc versie van deze routines doen dit); als u een privé
malloc implementatie gebruikt dat errno niet zet, dan zullen bepaalde
bibliotheek routines falen zonder een reden te vermelden met errno.
‘Crash-es’ in malloc(), free() of realloc() zijn vrijwel altijd gerela‐
teerd aan stapel {heap} corruptie, zoals overschrijden van een
toegewezen homp of vrijmaken van dezelfde wijzer twee keer.
Recente versies van Linux libc (later dan 5.4.23) en GNU libc (2.x)
bevatten een malloc implementatie die instelbaar is via omgevingsvari‐
abelen Wanneer MALLOC_CHECK_ gezet is, wordt een speciale (minder
snelle) implementatie gebruikt die ontworpen is om tolerant te zijn
voor eenvoudige fouten, zoals dubbele aanroepen van free() met het‐
zelfde argument, of overschrijden van een buffer met een enkele byte
(off-by-one bugs). Niet tegen all dergelijke fouten kan echter worden
beschermd, en geheugen lekken kunnen resulteren. Als MALLOC_CHECK_
gezet is naar 0, elke opgemerkte stapel {heap} corruptie wordt stillet‐
jes genegeerd; als gezet naar 1, wordt een diagnose gegeven op stderr;
als gezet naar 2, wordt onmiddellijk abort() aangeroepen om het
krakkemikkige programma uit zijn lijden te verlossen. Dit kan bruik‐
baar zijn omdat anders later een crash kan optreden, en de ware oorzaak
van het probleem dan moeilijk te achterhalen is.
VERTALING
Dit is een handleiding uit manpages-nl 1.34. Alles wat tussen ‘{’..‘}’
staat is aanvullende vertaling, en hoort niet bij de originele handlei‐
ding. Email naar <manpages-nl@nl.linux.org>.
$Id: malloc.3,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $