std:: memset
|
Определено в заголовочном файле
<cstring>
|
||
|
void
*
memset
(
void
*
dest,
int
ch,
std::
size_t
count
)
;
|
||
Копирует значение static_cast < unsigned char > ( ch ) в каждую из первых count символов объекта, на который указывает dest . Если объект является потенциально-перекрывающимся подобъектом или не является TriviallyCopyable (например, скалярным типом, C-совместимой структурой или массивом тривиально копируемого типа), поведение не определено. Если count превышает размер объекта, на который указывает dest , поведение не определено.
Содержание |
Параметры
| dest | - | указатель на заполняемый объект |
| ch | - | байт заполнения |
| count | - | количество байт для заполнения |
Возвращаемое значение
dest
Примечания
std::memset
может быть оптимизирован (в соответствии с правилами
as-if
), если объект, изменяемый этой функцией, больше не используется до конца своего времени жизни (например,
gcc bug 8537
). По этой причине данная функция не может использоваться для очистки памяти (например, для заполнения нулями массива, хранящего пароль).
Решения для этого включают
std::fill
с volatile указателями,
(C23)
memset_explicit()
,
(C11)
memset_s
, FreeBSD
explicit_bzero
или Microsoft
SecureZeroMemory
.
Пример
#include <bitset> #include <climits> #include <cstring> #include <iostream> int main() { int a[4]; using bits = std::bitset<sizeof(int) * CHAR_BIT>; std::memset(a, 0b1111'0000'0011, sizeof a); for (int ai : a) std::cout << bits(ai) << '\n'; }
Вывод:
00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011
Смотрите также
|
копирует один буфер в другой
(функция) |
|
|
перемещает один буфер в другой
(функция) |
|
|
копирует заданный широкий символ в каждую позицию массива широких символов
(функция) |
|
|
копирует-присваивает заданное значение каждому элементу в диапазоне
(шаблон функции) |
|
|
копирует-присваивает заданное значение N элементам в диапазоне
(шаблон функции) |
|
|
(C++11)
|
проверяет, является ли тип тривиально копируемым
(шаблон класса) |
|
Документация C
для
memset
|
|