memcpy(3)

NUME
memcpy - copiază o zonă de memorie

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <string.h>

void *memcpy(void destinația[restrict .n], const void sursa[restrict .n],
             size_t n);

DESCRIERE
Funcția memcpy() copiază n octeți din zona de memorie sursă în zona de memorie destinație. Zonele de memorie nu trebuie să se suprapună. Utilizați memmove(3) dacă zonele de memorie se suprapun.

VALOAREA RETURNATĂ
Funcția memcpy() returnează un indicator către destinație.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
memcpy() | Siguranța firelor | MT-Safe

STANDARDE
C11, POSIX.1-2008.

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

AVERTISMENTE
Nerespectarea cerinței ca zonele de memorie să nu se suprapună a fost sursa unor erori semnificative. (POSIX și standardele C sunt explicite că utilizarea memcpy() cu zone suprapuse produce un comportament nedefinit). În mod deosebit, în glibc 2.13, o optimizare a performanței memcpy() pe unele platforme (inclusiv x86-64) a inclus schimbarea ordinii în care octeții erau copiați de la sursă la destinație.

Această modificare a scos la iveală întreruperi în mai multe aplicații care efectuau copierea cu zone suprapuse. În cadrul implementării anterioare, ordinea de copiere a octeților a ascuns în mod fortuit problema, care a fost dezvăluită atunci când ordinea de copiere a fost inversată. În glibc 2.14, a fost adăugat un simbol cu versiunea, astfel încât binarele vechi (adică cele asociate cu versiuni glibc anterioare versiunii 2.14) să utilizeze o implementare memcpy() care să gestioneze în siguranță cazul memoriilor tampon care se suprapun (prin furnizarea unei implementări memcpy() „mai veche”, care a fost denumită memmove(3)).

CONSULTAȚI ȘI
bcopy(3), bstring(3), memccpy(3), memmove(3), mempcpy(3), strcpy(3), strncpy(3), wmemcpy(3)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.