Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       memcpy - копирует участок памяти

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <string.h>

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

ОПИСАНИЕ

       Функция  memcpy()  копирует n байт из участка памяти src в участок памяти dest. Адреса участков памяти не
       должны перекрываться друг другом. Если это неизбежно, используйте memmove(3).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       Функция memcpy() возвращает указатель на dest.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ memcpy()                                                            │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       C11, POSIX.1-2008.

ИСТОРИЯ

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

CAVEATS

       Несоблюдение требования не перекрытия областей памяти является источником серьёзных ошибок (в  стандартах
       POSIX   и   C   явно   указано,  что  выполнение  memcpy()  над  перекрывающимися  областями  приводит  к
       непредсказуемому поведению). Что особенно важно, в glibc 2.13 для оптимизации производительности memcpy()
       на некоторых платформах (включая x86-64) изменён порядок копирования байт из src в dest.

       Это изменение привело  к  поломкам  многих  приложений,  которые  выполняли  копирование  перекрывающихся
       областей. В предыдущей реализации порядок, в котором копировались байты, случайно скрывал ошибку, который
       выявилась  при  изменении  порядка  копирования.  В glibc 2.14 был добавлен символ версии для того, чтобы
       старые двоичные файлы (т.е., скомпонованные с версиями  glibc  до  2.14)  вызывали  реализацию  memcpy(),
       которая безопасно обрабатывает случай перекрывающихся буферов (предоставляя «старую» реализацию memcpy(),
       которая была просто ещё одним именем memmove(3)).

СМОТРИТЕ ТАКЖЕ

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

ПЕРЕВОД

       Русский   перевод   этой   страницы   руководства   разработал(и)   aereiae  <aereiae@gmail.com>,  Alexey
       <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>,
       Dmitry Bolkhovskikh <d20052005@yandex.ru>, ITriskTI <ITriskTI@gmail.com>,  Max  Is  <ismax799@gmail.com>,
       Yuri   Kozlov   <yuray@komyakino.ru>,   Иван   Павлов  <pavia00@gmail.com>,  Малянов  Евгений  Викторович
       <maljanow@outlook.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                        memcpy(3)