Provided by: manpages-pl-dev_4.18.1-1_all bug

NAZWA

       memcpy - kopiuje obszar pamięci

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <string.h>

       void *memcpy(void dest[restrict .n], const void src[restrict .n],
                    size_t n);

OPIS

       Funkcja  memcpy() kopiuje n bajtów z obszaru pamięci src do obszaru pamięci dest.  Obszary
       te nie mogą na siebie nachodzić. Jeżeli obszary pamięci na siebie nachodzą, należy  używać
       memmove(3).

WARTOŚĆ ZWRACANA

       Funkcja memcpy() zwraca wskaźnik do dest.

ATRYBUTY

       Informacje   o   pojęciach   używanych   w  tym  rozdziale  można  znaleźć  w  podręczniku
       attributes(7).

       ┌──────────────────────────────────────────────────────┬────────────────────────┬─────────┐
       │InterfejsAtrybutWartość │
       ├──────────────────────────────────────────────────────┼────────────────────────┼─────────┤
       │memcpy()                                              │ Bezpieczeństwo wątkowe │ MT-Safe │
       └──────────────────────────────────────────────────────┴────────────────────────┴─────────┘

STANDARDY

       POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

UWAGI

       Zignorowanie wymogu nienachodzenia na  siebie  obszarów  pamięci  jest  źródłem  istotnych
       błędów  (Standardy  POSIX  i  C  jednoznacznie  określają,  że  wykorzystanie  memcpy()  z
       nachodzącymi na siebie obszarami pamięciami daje niezdefiniowane zachowanie). Co więcej, w
       glibc  2.13  na  niektórych  platformach  (w tym x86-64) przeprowadzana jest optymalizacja
       wydajności memcpy() obejmująca zmianę kolejności kopiowania bajtów z src do dest.

       Zmiana ta ujawniła poważne błędy w  wielu  aplikacjach  przeprowadzających  kopiowania  na
       nachodzących   obszarach   pamięci.   W  poprzedniej  implementacji,  w  której  kolejność
       kopiowanych bajtów szczęśliwie ukrywała ten błąd, który odsłonił się po jej odwróceniu.  W
       glibc  2.14  dodano  wersjonowany  symbol,  dzięki czemu stare pliki binarne (zlinkowane z
       glibc w wersji wcześniejszej niż 2.14) korzystają z implementacji memcpy() która w  sposób
       bezpieczny  obsługuje  przypadek  nachodzących  obszarów  pamięci (udostępniając "starszą"
       implementację memcpy(), która była aliasem memmove(3)).

ZOBACZ TAKŻE

       bcopy(3),  bstring(3),  memccpy(3),   memmove(3),   mempcpy(3),   strcpy(3),   strncpy(3),
       wmemcpy(3)

TŁUMACZENIE

       Autorami   polskiego   tłumaczenia  niniejszej  strony  podręcznika  są:  Jarosław  Beczek
       <bexx@poczta.onet.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>,  Robert  Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją. Bliższe informacje o warunkach licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   lub   nowszej.   Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.