table of contents
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 Linux (nepublicate) |