http://www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html
配列のゼロクリアはmemsetではなく、
char a[10] = {0};
みたいに初期化子でやれってことらしい。
ただ、これだと先頭要素を明示的に0に指定して、後の要素は型に応じたデフォルトの初期値で初期化されているだけっぽいので、結果は変わらないが、下記のやり方の方がいいのではという気がする。
char a[10] = {};
この方法だと、型に応じたデフォルトの初期値で初期化されるらしい。
なので、おそらく、これでもゼロクリアされる。
この形で初期化するのが一番よさげ。
参考:https://programming-place.net/ppp/contents/cpp2/main/input.html#uniform_initialization
参考:https://armadillo.atmark-techno.com/forum/armadillo/3865
参考:https://ja.cppreference.com/w/cpp/language/zero_initialization
なお、
char a[10] = {1};
だと、全要素が1になるのでなく、先頭要素だけ1になった。
memsetを使わざるを得ないケース
処理の関係上、任意のタイミングで初期化処理を外部から繰り返し呼び出すようなケース。
この場合、初期化子により初期化はできないので、memsetでゼロクリアするしかない気がする。
他に良い方法が見つかったら修正する。
コメントを残す