Scroll to navigation

memcpy(3) Library Functions Manual memcpy(3)

NUME

memcpy - copiază o zonă de memorie

BIBLIOTECA

Biblioteca C standard (libc, -lc)

SINOPSIS

#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 făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 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.

2 mai 2024 Pagini de manual de Linux 6.8