Provided by: manpages-pl-dev_0.5-1_all bug

NAZWA

       calloc, malloc, free, realloc - przydziela i zwalnia pamięć dynamiczną

SKŁADNIA

       #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

        Uwaga! To tłumaczenie może być nieaktualne!

       calloc()  przydziela  pamięć  dla  tablicy  zawierającej nmemb elementów, każdy o rozmiarze size bajtów i
       zwraca wskaźnik do przydzielonej pamięci.  Pamięć jest zerowana.

       malloc() przydziela size bajtów i zwraca wskaźnik do przydzielonej pamięci.  Pamięć nie jest czyszczona.

       free() zwalnia obszar pamięci wskazywany  przez  ptr,  który  został  wcześniej  przydzielony  za  pomocą
       wywołania  malloc(),  calloc()  lub  realloc().   W  przeciwnym  przypadku, lub gdy free(ptr) zostało już
       wcześniej wywołane, funkcja zachowa się w sposób nieokreślony.  Jeśli ptr jest równe NULL,  nie  zostanie
       wykonana żadna operacja.

       realloc()  zmienia  rozmiar  bloku pamięci wskazywanego przez ptr na size bajtów.  Zawartość nie zostanie
       zmieniona w zakresie poniżej minimum ze starego i nowego rozmiaru; nowo przydzielona pamięć nie  zostanie
       zainicjalizowana.   Jeśli ptr jest równe NULL, to wywołanie jest równoważne malloc(size); jeśli size jest
       równe zeru, to wywołanie jest równoważne free(ptr).  O ile ptr nie jest równe NULL, musi ono być zwrócone
       przez wcześniejsze wywołanie malloc(), calloc() lub realloc().

WARTOŚĆ ZWRACANA

       Dla calloc() i malloc(), zwracana wartość jest wskaźnikiem do przydzielonej pamięci, który jest właściwie
       wyrównany dla dowolnego rodzaju zmiennej, lub NULL gdy żądanie zakończyło się niepowodzeniem.

       free() nie zwraca żadnej wartości.

       realloc() zwraca wskaźnik do nowoprzydzielonej pamięci, który  jest  właściwie  wyrównany  dla  dowolnego
       rodzaju zmiennej i może być różny od ptr, lub NULL gdy żądanie zakończy się niepowodzeniem. Jeśli rozmiar
       był  równy 0, zwracane jest NULL lub wskaźnik odpowiedni do przekazania go funkcji free().  Gdy realloc()
       zakończy się niepowodzeniem, pierwotny blok  zostaje  nienaruszony  -  nie  jest  on  ani  zwalniany  ani
       przesuwany.

ZGODNE Z

       ANSI-C

ZOBACZ TAKŻE

       brk(2), posix_memalign(3)

UWAGI

       Standard  Unix98  wymaga, by malloc(), calloc() i realloc() przy wystąpieniu błędu nadawały errno wartość
       ENOMEM. Glibc zakłada, że tak się dzieje (a wersje tych funkcji zawarte w glibc rzeczywiście  to  robią).
       Jeśli  wykorzystuje  się  własną  implementację  malloc,  która  nie  ustawia  errno,  to  pewne  funkcje
       biblioteczne mogą zawieść bez przekazania przyczyny w errno.

       Załamania się w malloc(), free() czy realloc() są niemal zawsze związane z uszkodzeniami  sterty,  takimi
       jak przekroczenia rozmiaru przydzielonego fragmentu lub dwukrotne zwolnienie tego samego wskaźnika.

       Nowe  wersje  linuksowej biblioteki libc (późniejsze niż 5.4.23) i GNU libc (2.x) zawierają implementację
       malloc, którą można  dostrajać  za  pośrednictwem  zmiennych  środowiskowych.  Przy  ustawionej  zmiennej
       MALLOC_CHECK_  stosowana  jest  specjalna (mniej wydajna) implementacja. Zgodnie z zamierzeniami, powinna
       być bardziej odporna na  proste  błędy,  jak  podwójne  wywołania  free()  z  tym  samym  argumentem  czy
       przekroczenia  o  pojedynczy  bajt  (błędy  off-by-one).  Nie chroni jednak przed wszystkimi tego rodzaju
       błędami, w wyniku których mogą powstać wycieki pamięci.  Jeśli MALLOC_CHECK_ ma wartość  0,  jakiekolwiek
       wykryte uszkodzenie sterty zostanie milcząco zignorowane; jeśli ma wartość 1, na stderr wypisywany będzie
       komunikat  diagnostyczny;  jeśli  ma  wartość  2,  to natychmiast zostanie wywołane abort().  Może się to
       przydać, gdyż w przeciwnym razie załamanie się mogłoby  wystąpić  dużo  później,  a  prawdziwa  przyczyna
       kłopotów byłaby wówczas bardzo trudna do wyśledzenia.

       Linux  stosuje  optymistyczną strategię przydzielania pamięci. Oznacza to, że gdy malloc() zwraca wartość
       różną od NULL, nie ma gwarancji, iż pamięć faktycznie jest  dostępna.   Jeśli  okaże  się,  że  systemowi
       brakło pamięci, niesławny zabójca OOM zabije jeden lub więcej procesów.

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne.
       W  razie  zauważenia  różnic  między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
       funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 3 malloc

       Prosimy  o  pomoc  w  aktualizacji  stron  man  -   więcej   informacji   można   znaleźć   pod   adresem
       http://sourceforge.net/projects/manpages-pl/.

GNU                                                1993-04-04                                          MALLOC(3)