memcpy(3) Library Functions Manual memcpy(3) NAZWA memcpy - kopiuje obszar pamieci BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include void *memcpy(void dest[restrict .n], const void src[restrict .n], size_t n); OPIS Funkcja memcpy() kopiuje n bajtow z obszaru pamieci src do obszaru pamieci dest. Obszary te nie moga na siebie nachodzic. Jezeli obszary pamieci na siebie nachodza, nalezy uzywac memmove(3). WARTOSC ZWRACANA Funkcja memcpy() zwraca wskaznik do dest. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------------+--------------------------+---------------+ |Interfejs | Atrybut | Wartosc | +---------------------------+--------------------------+---------------+ |memcpy() | Bezpieczenstwo watkowe | MT-bezpieczne | +---------------------------+--------------------------+---------------+ STANDARDY C11, POSIX.1-2008. HISTORIA POSIX.1-2001, C89, SVr4, 4.3BSD. CAVEATS Zignorowanie wymogu nienachodzenia na siebie obszarow pamieci jest zrodlem istotnych bledow (Standardy POSIX i C jednoznacznie okreslaja, ze wykorzystanie memcpy() z nachodzacymi na siebie obszarami pamieciami daje niezdefiniowane zachowanie). Co wiecej, w glibc 2.13 na niektorych platformach (w tym x86-64) przeprowadzana jest optymalizacja wydajnosci memcpy() obejmujaca zmiane kolejnosci kopiowania bajtow z src do dest. Zmiana ta ujawnila powazne bledy w wielu aplikacjach przeprowadzajacych kopiowania na nachodzacych obszarach pamieci. W poprzedniej implementacji, w ktorej kolejnosc kopiowanych bajtow szczesliwie ukrywala ten blad, ktory odslonil sie po jej odwroceniu. W glibc 2.14 dodano wersjonowany symbol, dzieki czemu stare pliki binarne (zlinkowane z glibc w wersji wczesniejszej niz 2.14) korzystaja z implementacji memcpy() ktora w sposob bezpieczny obsluguje przypadek nachodzacych obszarow pamieci (udostepniajac "starsza" implementacje memcpy(), ktora byla aliasem memmove(3)). ZOBACZ TAKZE bcopy(3), bstring(3), memccpy(3), memmove(3), mempcpy(3), strcpy(3), strncpy(3), wmemcpy(3) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Jaroslaw Beczek , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. memcpy(3)