std:: memmove
|
Definido en el encabezado
<cstring>
|
||
|
void
*
memmove
(
void
*
dest,
const
void
*
src,
std::
size_t
count
)
;
|
||
Realiza las siguientes operaciones en orden:
- Crea implícitamente objetos en dest .
- Copia count caracteres (como si fueran de tipo unsigned char , lo mismo a continuación) desde el objeto apuntado por src hacia un arreglo temporal arr de count caracteres, donde arr no se superpone con los objetos apuntados por dest y src .
- Copia count caracteres desde arr hacia el objeto apuntado por dest .
Si dest o src es un puntero nulo o un puntero inválido , el comportamiento es indefinido.
Contenidos |
Parámetros
| dest | - | puntero a la ubicación de memoria donde copiar |
| src | - | puntero a la ubicación de memoria desde donde copiar |
| count | - | número de bytes a copiar |
Valor de retorno
Si hay un objeto creado adecuado , devuelve un puntero al mismo; de lo contrario devuelve dest .
Notas
A pesar de que la especificación dice que se utiliza un búfer temporal, las implementaciones reales de esta función no incurren en la sobrecarga de doble copia o memoria adicional. Para count pequeños, puede cargar y escribir registros; para bloques más grandes, un enfoque común (glibc y bsd libc) es copiar bytes hacia adelante desde el principio del búfer si el destino comienza antes del origen, y hacia atrás desde el final en caso contrario, con una alternativa a std::memcpy cuando no hay superposición alguna.
Donde
strict aliasing
prohíbe examinar la misma memoria como valores de dos tipos diferentes,
std::memmove
puede utilizarse para convertir los valores.
Ejemplo
Salida:
1234567890 1234456890
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 4064 | C++98 | no estaba claro si el puntero retornado apunta a un objeto creado adecuadamente | aclarado |
Véase también
|
copia un búfer a otro
(función) |
|
|
llena un búfer con un carácter
(función) |
|
|
copia cierta cantidad de caracteres anchos entre dos arreglos, posiblemente superpuestos
(función) |
|
|
(C++11)
|
copia un rango de elementos a una nueva ubicación
(plantilla de función) |
|
copia un rango de elementos en orden inverso
(plantilla de función) |
|
|
(C++11)
|
verifica si un tipo es trivialmente copiable
(plantilla de clase) |
|
Documentación C
para
memmove
|
|