focal (3) memcpy.3.gz

Provided by: manpages-pl-dev_0.7-2_all bug

NAZWA

       memcpy - kopiuje obszar pamięci

SKŁADNIA

       #include <string.h>

       void *memcpy(void *dest, const void *src, 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 │
       └──────────┴────────────────────────┴─────────┘

ZGODNE Z

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

UWAGI

       Zignorowanie wymogu nienachodzenia na siebie obszarów pamięci jest źródłem prawdziwych 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), memccpy(3), memmove(3), mempcpy(3), strcpy(3), strncpy(3), wmemcpy(3)

O STRONIE

       Angielska  wersja  tej strony pochodzi z wydania 4.07 projektu Linux man-pages. Opis projektu, informacje
       dotyczące   zgłaszania   błędów   oraz   najnowszą   wersję   oryginału   można   znaleźć   pod   adresem
       https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

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

       Polskie  tłumaczenie  jest  częścią  projektu  manpages-pl;  uwagi,  pomoc,  zgłaszanie błędów na stronie
       http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją  4.07 oryginału.

                                                   2015-07-23                                          MEMCPY(3)