Compartir a través de


memcpy, wmemcpy

Copia bytes entre búferes. Hay disponibles versiones más seguras de estas funciones; vea memcpy_s, wmemcpy_s.

void *memcpy(    void *dest,    const void *src,    size_t count  ); wchar_t *wmemcpy(    wchar_t *dest,    const wchar_t *src,    size_t count );

Parámetros

  • dest
    Nuevo búfer.

  • src
    Búfer del que copiar.

  • count
    Número de caracteres que se copiará.

Valor devuelto

El valor de dest.

Comentarios

memcpy copia count bytes de src a dest; wmemcpy copia count caracteres anchos (dos bytes). Si el origen y el destino se superponen, el comportamiento de memcpy no está definido. Use memmove para controlar las áreas superpuestas.

Nota de seguridadNota sobre la seguridad

Asegúrese de que el búfer de destino sea del mismo tamaño o mayor que el búfer de origen.Para obtener más información, vea Evitar saturaciones del búfer.

Nota de seguridadNota sobre la seguridad

Dado que se ha determinado que muchas saturaciones de búferes (posibles vulnerabilidades de seguridad) se deben a un uso inapropiado de memcpy, esta función se cuenta entre las "prohibidas" por el ciclo de vida de desarrollo de seguridad (SDL).Observará que algunas clases de biblioteca de VC ++ siguen utilizando memcpy.Además, verá que el optimizador del compilador de VC ++ emite en ocasiones llamadas a memcpy.El producto Visual C++ se desarrolla de acuerdo con el proceso SDL, por lo que se ha evaluado con cuidado el uso de esta función prohibida.En el caso de su uso por parte de bibliotecas, se han examinado meticulosamente las llamadas para garantizar que no provoquen saturaciones de búferes.En el caso del compilador, determinados patrones de código se reconocen en ocasiones como idénticos al patrón de memcpy, y por tanto se reemplazan con una llamada a la función.En tales casos, el uso de memcpy no es menos seguro de lo que hubieran sido las instrucciones originales; estas simplemente se han optimizado como una llamada a la función memcpy para mejorar el rendimiento.Al igual que el uso de funciones de CRT "seguras" no garantiza la seguridad (solo dificulta la falta de seguridad), el uso de funciones "prohibidas" no garantiza el peligro (solo se requiere un mayor escrutinio para garantizar la seguridad)

Dado que el uso de memcpy por parte del compilador y las bibliotecas de VC ++ está tan estudiado, se permiten estas llamadas dentro del código sin perder la conformidad con SDL.Las llamadas a memcpy en el código fuente de la aplicación solo son conformes a SDL si las han revisado expertos en seguridad.

Las funciones memcpy y wmemcpy solo quedarán desusadas si la constante _CRT_SECURE_DEPRECATE_MEMORY se define antes de la declaración de inclusión, como en el ejemplo siguiente:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

o

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Requisitos

Rutina

Encabezado necesario

memcpy

<memory.h> o <string.h>

wmemcpy

<wchar.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

Vea en memmove un ejemplo de cómo usar memcpy.

Vea también

Referencia

Manipulación del búfer

_memccpy

memchr, wmemchr

memcmp, wmemcmp

memmove, wmemmove

memset, wmemset

strcpy_s, wcscpy_s, _mbscpy_s

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l