memcpy

MEMCPY(3)                Podręcznik programisty Linuksa                MEMCPY(3)



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

       ┌──────────┬────────────────────────┬─────────┐
       │Interfejs Atrybut                Wartość │
       ├──────────┼────────────────────────┼─────────┤
       │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 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)

O STRONIE
       Angielska wersja tej strony pochodzi z wydania 5.08 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 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 lub nowszej. Nie przyjmuje się ŻADNEJ
       ODPOWIEDZIALNOŚCI.

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



                               15 września 2017 r.                     MEMCPY(3)