Syntaxe :
#include <cstring> void* memset (void* buf, int c, size_t nb);
La fonction memset()
copie le caractère c
dans les nb
premiers emplacements
mémoire de buf
.
La valeur de retour de memset()
est un pointeur vers buf
.
Cette fonction est utile pour initialiser une section de mémoire à une certaine valeur ; par exemple, le bout de code suivant :
const int TAILLE_TAB = 300; char tab[TAILLE_TAB]; ... // réinitialise le contenu de tab memset(tab, '\0', TAILLE_TAB);
… est un moyen très efficace de réinitialiser le contenu de tab
.
Le tableau ci-dessous compare deux méthodes différentes pour initialiser un tableau
de caractères : une boucle for
contre la fonction memset()
.
Taille du tableau | Initialisation avec une boucle for | Initialisation avec memset() |
---|---|---|
1000 | 0.016 | 0.017 |
10000 | 0.055 | 0.013 |
100000 | 0.443 | 0.029 |
1000000 | 4.337 | 0.291 |
Remarquez que lorsqu'on augmente la taille du tableau à initialiser, memset()
réalise
cette opération bien plus rapidement que la boucle for
.