oracular (3) memcpy.3.gz

Provided by: manpages-pl-dev_4.23.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-bezpieczne │
       └───────────────────────────────────────────────────────────────┴────────────────────────┴───────────────┘

STANDARDY

       C11, POSIX.1-2008.

HISTORIA

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

ZASTRZEŻENIA

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