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