¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

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 );

dest

Nuevo búfer.

src

Búfer del que copiar.

count

Número de caracteres que se copiará.

El valor de dest.

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 seguridad Nota 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 seguridad Nota 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>

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.

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

Adiciones de comunidad

Mostrar:
© 2015 Microsoft