トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 | 指定のメモリアドレスを対象に、指定の文字を指定文字数だけ書き込む | |
ヘッダ | string.h | |
形式 | void* memset(void* s, int c, size_t n); | |
引数 | s | 書き込み先の先頭のメモリアドレス。 |
c | 書き込む文字。 | |
n | 書き込む文字数。 | |
戻り値 | s が返される。 | |
詳細 | 引数s で指定したメモリアドレスを起点にして、引数c の値を unsigned char型に変換したものを、引数n で指定した文字数だけ書き込む。 | |
注意 | 書き込み先の領域が、その後まったくアクセスされないようなプログラムになっている場合に、コンパイラは memset関数自体が不要と考え、最適化によって memset関数の呼び出しごと削除してしまう可能性がある。パスワードなどの重要な情報を書き込んだ領域をクリアする目的で使うと、セキュリティ上の重大な問題につながる恐れがある。この問題を回避するためには、C11 で追加された memset_s関数、C23 で追加された memset_explicit関数を使う方法がある(そのほか、C言語の標準ではない関数を OS などが提供しているかもしれない)。 | |
使用例 |
実行結果:
|
|
関連 |
ワイド文字とみなして同様の処理を行う wmemset関数がある。 C11 には安全性を高めた memset_s関数がある。 |
|
解説章 | 第34章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place 管理者に紹介料が支払われています。
(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |