std:: memset
|
Definido en el encabezado
<cstring>
|
||
|
void
*
memset
(
void
*
dest,
int
ch,
std::
size_t
count
)
;
|
||
Copia el valor static_cast < unsigned char > ( ch ) en cada uno de los primeros count caracteres del objeto apuntado por dest . Si el objeto es un subobjeto potencialmente superpuesto o no es TriviallyCopyable (por ejemplo, escalar, estructura compatible con C, o un array de tipo trivialmente copiable), el comportamiento es indefinido. Si count es mayor que el tamaño del objeto apuntado por dest , el comportamiento es indefinido.
Contenidos |
Parámetros
| dest | - | puntero al objeto a llenar |
| ch | - | byte de relleno |
| count | - | número de bytes a llenar |
Valor de retorno
dest
Notas
std::memset
puede ser optimizado (bajo las reglas
as-if
) si el objeto modificado por esta función no se accede nuevamente durante el resto de su tiempo de vida (por ejemplo,
gcc bug 8537
). Por esta razón, esta función no puede utilizarse para limpiar memoria (por ejemplo, para llenar con ceros un array que almacenó una contraseña).
Las soluciones para eso incluyen
std::fill
con punteros volátiles,
(C23)
memset_explicit()
,
(C11)
memset_s
, FreeBSD
explicit_bzero
o Microsoft
SecureZeroMemory
.
Ejemplo
#include <bitset> #include <climits> #include <cstring> #include <iostream> int main() { int a[4]; using bits = std::bitset<sizeof(int) * CHAR_BIT>; std::memset(a, 0b1111'0000'0011, sizeof a); for (int ai : a) std::cout << bits(ai) << '\n'; }
Salida:
00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011
Véase también
|
copia un búfer a otro
(función) |
|
|
mueve un búfer a otro
(función) |
|
|
copia el carácter ancho dado a cada posición en un arreglo de caracteres anchos
(función) |
|
|
asigna por copia el valor dado a cada elemento en un rango
(plantilla de función) |
|
|
asigna por copia el valor dado a N elementos en un rango
(plantilla de función) |
|
|
(C++11)
|
verifica si un tipo es trivialmente copiable
(plantilla de clase) |
|
Documentación C
para
memset
|
|