C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス memset_explicit

🔧 文字列 ・ string.h ・ C23

memset_explicit の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

void *memset_explicit(void *dest, int ch, size_t count);

どんな関数か

memsetと同様にメモリを指定値で埋めるが、コンパイラの最適化によって「無駄な書き込み」として消去されないことが保証される。パスワードや鍵などの機密データをメモリから確実に消去する用途向けにC23で追加された。

使用例

#include <string.h>
int main(void) {
    char secret[16] = "password123";
    memset_explicit(secret, 0, sizeof secret);
    return 0;
}

つまずきやすい注意点

⚠️ 通常のmemsetで機密データを消去するコードは、直後に変数を使わない場合コンパイラの最適化で消される恐れがある。機密消去には必ずこちらを使う。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

memset_explicit と一緒に使う関数

memsetメモリ領域の各バイトを指定した値で埋める。配列やバッファのゼロクリア、構造体の初期化など、あらゆる場面で使われる定番関数… memmoveメモリ領域を指定バイト数だけコピーする点はmemcpyと同じだが、コピー元とコピー先が重なっていても内部で考慮され正しく…

同じ分類(文字列)の関数

memcmp memcpy memmove memset strcat strchr strcmp strcoll strcpy strcspn strdup strerror strlen strncat strncmp strncpy

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る