std::memset — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
||
Копирует значение static_cast<unsigned char>(ch) в каждый из первых count символов объекта, на который указывает dest. Если объект представляет собой потенциально перекрывающийся подобъект или не является TriviallyCopyable (например, скалярная, C-совместимая структура или массив тривиально копируемого типа), поведение не определено. Если count больше размера объекта, на который указывает dest, поведение не определено.
Параметры
| dest | — | указатель на объект для заполнения |
| ch | — | байт заполнения |
| count | — | количество байт для заполнения |
Возвращаемое значение
dest
Примечание
std::memset может быть оптимизирован (в соответствии с правилами как есть), если к объекту, изменённому этой функцией, больше не осуществляется доступ до конца его жизни (например, баг gcc 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
Смотрите также
| копирует один буфер в другой (функция) [править] | |
| перемещает один буфер в другой (функция) [править] | |
| копирует заданный широкий символ в каждую позицию в массиве широких символов (функция) [править] | |
| присваивает диапазону элементов определённое значение (шаблон функции) [править] | |
| присваивает значение определённому количеству элементов (шаблон функции) [править] | |
(C++11) |
проверяет, можно ли тривиально скопировать тип (шаблон класса) [править] |
Документация C по memset | |