std:: memset
|
Défini dans l'en-tête
<cstring>
|
||
|
void
*
memset
(
void
*
dest,
int
ch,
std::
size_t
count
)
;
|
||
Copie la valeur static_cast < unsigned char > ( ch ) dans chacun des premiers count caractères de l'objet pointé par dest . Si l'objet est un sous-objet potentiellement chevauchant ou n'est pas TriviallyCopyable (par exemple, scalaire, structure compatible C ou tableau de type trivialement copiable), le comportement est indéfini. Si count est supérieur à la taille de l'objet pointé par dest , le comportement est indéfini.
Table des matières |
Paramètres
| dest | - | pointeur vers l'objet à remplir |
| ch | - | octet de remplissage |
| count | - | nombre d'octets à remplir |
Valeur de retour
dest
Notes
std::memset
peut être optimisé (selon les règles
as-if
) si l'objet modifié par cette fonction n'est plus accédé pendant le reste de sa durée de vie (par exemple,
gcc bug 8537
). Pour cette raison, cette fonction ne peut pas être utilisée pour effacer la mémoire (par exemple, pour remplir un tableau qui stockait un mot de passe avec des zéros).
Les solutions pour cela incluent
std::fill
avec des pointeurs volatiles,
(C23)
memset_explicit()
,
(C11)
memset_s
, FreeBSD
explicit_bzero
ou Microsoft
SecureZeroMemory
.
Exemple
#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'; }
Sortie :
00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011
Voir aussi
|
copie un tampon vers un autre
(fonction) |
|
|
déplace un tampon vers un autre
(fonction) |
|
|
copie le caractère large donné à chaque position d'un tableau de caractères larges
(fonction) |
|
|
assigne par copie la valeur donnée à chaque élément d'une plage
(modèle de fonction) |
|
|
assigne par copie la valeur donnée à N éléments d'une plage
(modèle de fonction) |
|
|
(C++11)
|
vérifie si un type est trivialement copiable
(modèle de classe) |
|
Documentation C
pour
memset
|
|