Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
calloc, malloc, free, realloc - przydziela i zwalnia pami dynamiczn
SK/LADNIA
#include <stdlib.h>
void *calloc(size_t nmemb, size_t size);
void *malloc(size_t size);
void free(void *ptr);
void *realloc(void *ptr, size_t size);
OPIS
calloc() przydziela pami dla tablicy zawierajcej nmemb elementow, kady
o rozmiarze size bajtow i zwraca wskanik do przydzielonej pamici. Pami
jest zerowana.
malloc() przydziela size bajtow i zwraca wskanik do przydzielonej
pamici. Pami nie jest czyszczona.
free() zwalnia obszar pamici wskazywany przez ptr, ktory zostal
wczeniej przydzielony za pomoc wywolania malloc(), calloc() lub
realloc(). W przeciwnym przypadku, lub gdy free(ptr) zostalo ju
wczeniej wywolane, funkcja zachowa si w sposob nieokrelony. Jeli ptr
jest rowne NULL, nie zostanie wykonana adna operacja.
realloc() zmienia rozmiar bloku pamici wskazywanego przez ptr na size
bajtow. Zawarto nie zostanie zmieniona w zakresie poniej minimum ze
starego i nowego rozmiaru; nowo przydzielona pami nie zostanie
zainicjalizowana. Jeli ptr jest rowne NULL, to wywolanie jest
rownowane malloc(size); jeli size jest rowne zeru, to wywolanie jest
rownowane free(ptr). O ile ptr nie jest rowne NULL, musi ono by
zwrocone przez wczeniejsze wywolanie malloc(), calloc() lub realloc().
WARTO ZWRACANA
Dla calloc() i malloc(), zwracana warto jest wskanikiem do
przydzielonej pamici, ktory jest wlaciwie wyrownany dla dowolnego
rodzaju zmiennej, lub NULL gdy danie zakoczylo si niepowodzeniem.
free() nie zwraca adnej wartoci.
realloc() zwraca wskanik do nowoprzydzielonej pamici, ktory jest
wlaciwie wyrownany dla dowolnego rodzaju zmiennej i moe by rony od ptr,
lub NULL gdy danie zakoczy si niepowodzeniem. Jeli rozmiar byl rowny 0,
zwracane jest NULL lub wskanik odpowiedni do przekazania go funkcji
free(). Gdy realloc() zakoczy si niepowodzeniem, pierwotny blok
zostaje nienaruszony - nie jest on ani zwalniany ani przesuwany.
ZGODNE Z
ANSI-C
ZOBACZ TAKE
brk(2), posix_memalign(3)
UWAGI
Standard Unix98 wymaga, by malloc(), calloc() i realloc() przy
wystpieniu bldu nadawaly errno warto ENOMEM. Glibc zaklada, e tak si
dzieje (a wersje tych funkcji zawarte w glibc rzeczywicie to robi).
Jeli wykorzystuje si wlasn implementacj malloc, ktora nie ustawia
errno, to pewne funkcje biblioteczne mog zawie bez przekazania
przyczyny w errno.
Zalamania si w malloc(), free() czy realloc() s niemal zawsze zwizane z
uszkodzeniami sterty, takimi jak przekroczenia rozmiaru przydzielonego
fragmentu lub dwukrotne zwolnienie tego samego wskanika.
Nowe wersje linuksowej biblioteki libc (poniejsze ni 5.4.23) i GNU libc
(2.x) zawieraj implementacj malloc, ktor mona dostraja za porednictwem
zmiennych rodowiskowych. Przy ustawionej zmiennej MALLOC_CHECK_
stosowana jest specjalna (mniej wydajna) implementacja. Zgodnie z
zamierzeniami, powinna by bardziej odporna na proste bldy, jak podwojne
wywolania free() z tym samym argumentem czy przekroczenia o pojedynczy
bajt (bldy off-by-one). Nie chroni jednak przed wszystkimi tego
rodzaju bldami, w wyniku ktorych mog powsta wycieki pamici. Jeli
MALLOC_CHECK_ ma warto 0, jakiekolwiek wykryte uszkodzenie sterty
zostanie milczco zignorowane; jeli ma warto 1, na stderr wypisywany
bdzie komunikat diagnostyczny; jeli ma warto 2, to natychmiast zostanie
wywolane abort(). Moe si to przyda, gdy w przeciwnym razie zalamanie
si mogloby wystpi duo poniej, a prawdziwa przyczyna klopotow bylaby
wowczas bardzo trudna do wyledzenia.
Linux stosuje optymistyczn strategi przydzielania pamici. Oznacza to, e
gdy malloc() zwraca warto ron od NULL, nie ma gwarancji, i pami
faktycznie jest dostpna. Jeli okae si, e systemowi braklo pamici,
nieslawny zabojca OOM zabije jeden lub wicej procesow.
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.