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.