Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

memcpy_s, wmemcpy_s

Copia bytes entre búferes. Éstas son versiones de memcpy, wmemcpy con mejoras de seguridad como se describe en Características de seguridad en CRT.

errno_t memcpy_s(
   void *dest,
   size_t numberOfElements,
   const void *src,
   size_t count 
);
errno_t wmemcpy_s(
   wchar_t *dest,
   size_t numberOfElements,
   const wchar_t *src,
   size_t count
);

dest

nuevo búfer.

numberOfElements

Tamaño del búfer de destino.

src

búfer a copiar de.

count

Número de caracteres que se van a copiar.

cero si correctamente; un código de error del error.

condiciones de error

dest

numberOfElements

src

Valor devuelto

Contenido de dest

NULL

cualquier

cualquier

EINVAL

no modificado

cualquier

cualquier

NULL

EINVAL

dest se pone a cero out

cualquier

< count

cualquier

ERANGE

dest se pone a cero out

memcpy_s copia los bytes de count de src a dest; caracteres anchos de count de copias de wmemcpy_s (dos bytes). Si el origen y el destino se superponen, el comportamiento de memcpy_s es indefinido. Uso memmove_s de controlar superponer las regiones.

estas funciones validan sus parámetros. Si dest o src es un puntero NULL, o numberOfElements es demasiado pequeño para el búfer, estas funciones se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones EINVAL return y errno determinado a EINVAL.

rutina

Encabezado necesario

memcpy_s

<memory.h> o <string.h>

wmemcpy_s

<wchar.h>

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

// crt_memcpy_s.c
// Copy memory in a more secure way.

#include <memory.h>
#include <stdio.h>

int main()
{
   int a1[10], a2[100], i;
   errno_t err;

   // Populate a2 with squares of integers
   for (i = 0; i < 100; i++)
   {
      a2[i] = i*i;
   }

   // Tell memcpy_s to copy 10 ints (40 bytes), giving
   // the size of the a1 array (also 40 bytes).
   err = memcpy_s(a1, sizeof(a1), a2, 10 * sizeof (int) );    
   if (err)
   {
      printf("Error executing memcpy_s.\n");
   }
   else
   {
     for (i = 0; i < 10; i++)
       printf("%d ", a1[i]);
   }
   printf("\n");
}
0 1 4 9 16 25 36 49 64 81 

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Adiciones de comunidad

AGREGAR
Mostrar: