FreeBSD Manual Pages
std::memset(3) C++ Standard Libary std::memset(3) NAME std::memset - std::memset Synopsis Defined in header <cstring> void* memset( void* dest, int ch, std::size_t count ); Copies the value static_cast<unsigned char>(ch) into each of the first count characters of the object pointed to by dest. If the object is a potentially-overlapping subobject or is not TriviallyCopyable (e.g., scalar, C-compatible struct, or an array of trivially copyable type), the behavior is undefined. If count is greater than the size of the object pointed to by dest, the behavior is undefined. Parameters dest - pointer to the object to fill ch - fill byte count - number of bytes to fill Return value dest Notes std::memset may be optimized away (under the as-if rules) if the ob- ject modified by this function is not accessed again for the rest of its lifetime (e.g., gcc bug 8537). For that reason, this function cannot be used to scrub memory (e.g., to fill an array that stored a password with zeroes). Solutions for that in- clude std::fill with volatile pointers, C11 memset_s, FreeBSD explicit_bzero or Mi- crosoft SecureZeroMemory. Example // Run this code #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'; } Output: 00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011 See also memcpy copies one buffer to another (function) memmove moves one buffer to another (function) copies the given wide character to every posi- tion in a wide wmemset character array (function) fill copy-assigns the given value to every element in a range (function template) fill_n copy-assigns the given value to N elements in a range (function template) is_trivially_copyable checks if a type is trivially copyable (C++11) (class template) http://cppreference.com 2022.07.31 std::memset(3)
NAME | Synopsis | Parameters | Return value | Notes | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::memset&sektion=3&manpath=FreeBSD+Ports+15.0>
