Пространства имён
Варианты
Действия

std::memset

Материал из cppreference.com
< cpp‎ | string‎ | byte
 
 
 
Однобайтовые строки с завершающим нулём
Функции
Манипуляции с символами
Преобразование в числовые форматы
Манипуляции со строками
Проверка строки
Манипуляции с памятью
Разное
 
Определено в заголовочном файле <cstring>
void* memset(void* dest, int ch, std::size_t count );

Копирует значение static_cast<unsignedchar>(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

[править]Смотрите также

копирует один буфер в другой
(функция)[править]
перемещает один буфер в другой
(функция)[править]
копирует заданный широкий символ в каждую позицию в массиве широких символов
(функция)[править]
присваивает диапазону элементов определённое значение
(шаблон функции)[править]
присваивает значение определённому количеству элементов
(шаблон функции)[править]
проверяет, можно ли тривиально скопировать тип
(шаблон класса)[править]
close