Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
);
Parámetros
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.
Valor devuelto
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 |
Comentarios
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.
Requisitos
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.
Ejemplo
// 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");
}
Equivalente en .NET Framework
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.
Vea también
Referencia
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l