文法:
#include <cstring> void* memset( void* バッファ, int 文字, size_t カウント );
memset()関数はカウントの文字数分、文字をコピーしてバッファに書き込みます。返り値はバッファへのポインタです。この関数はメモリブロックを何かの値で初期化したい場合に便利です。
サンプル:
const int ARRAY_LENGTH = 300; char the_array[ARRAY_LENGTH]; ... // 配列をすべてゼロで初期化します memset( the_array, '\0', ARRAY_LENGTH );
このコードは効率良くthe_arrayの値をすべてゼロにすることができます。
以下の表は、forループとmemsetのそれぞれの、文字の配列の初期化にかかる時間を比較したものです。初期化を行うデータサイズが増えれば増えるほど、明らかにmemsetが完了する時間が早くなっていきます:
| 配列のサイズ | forループによる初期化 | memset()による初期化 |
|---|---|---|
| 1000 | 0.016 | 0.017 |
| 10000 | 0.055 | 0.013 |
| 100000 | 0.443 | 0.029 |
| 1000000 | 4.337 | 0.291 |