🔧 文字列 ・ string.h ・ C23
memset_explicit の使い方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 と一緒に使う関数memcmp
memcpy
memmove
memset
strcat
strchr
strcmp
strcoll
strcpy
strcspn
strdup
strerror
strlen
strncat
strncmp
strncpy
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。