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.
ContenidoParámetros
Valor de retornoSi hay un objeto creado adecuado , devuelve un puntero al mismo; de lo contrario devuelve dest . NotasA 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,
Ejemplo
Ejecutar este código
Salida: 1234567890 1234456890 Informes de defectosLos siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
Véase también
| |||||||||||||||||||||||||||||||||