std:: memset
|
Definiert im Header
<cstring>
|
||
|
void
*
memset
(
void
*
dest,
int
ch,
std::
size_t
count
)
;
|
||
Kopiert den Wert static_cast < unsigned char > ( ch ) in jedes der ersten count Zeichen des Objekts, auf das dest zeigt. Wenn das Objekt ein potenziell überlappendes Teilobjekt ist oder nicht TriviallyCopyable ist (z.B. Skalar, C-kompatible Struktur oder ein Array von trivial kopierbarem Typ), ist das Verhalten undefiniert. Wenn count größer als die Größe des Objekts ist, auf das dest zeigt, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| dest | - | Zeiger auf das zu füllende Objekt |
| ch | - | Füllbyte |
| count | - | Anzahl der zu füllenden Bytes |
Rückgabewert
dest
Hinweise
std::memset
kann wegoptimiert werden (gemäß den
as-if
Regeln), wenn das von dieser Funktion modifizierte Objekt für den Rest seiner Lebensdauer nicht mehr aufgerufen wird (z.B.
gcc bug 8537
). Aus diesem Grund kann diese Funktion nicht zum Überschreiben von Speicher verwendet werden (z.B. um ein Array, das ein Passwort enthielt, mit Nullen zu füllen).
Lösungen dafür umfassen
std::fill
mit flüchtigen Zeigern,
(C23)
memset_explicit()
,
(C11)
memset_s
, FreeBSD
explicit_bzero
oder Microsoft
SecureZeroMemory
.
Beispiel
#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'; }
Ausgabe:
00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011 00000011000000110000001100000011
Siehe auch
|
kopiert einen Puffer in einen anderen
(Funktion) |
|
|
verschiebt einen Puffer in einen anderen
(Funktion) |
|
|
kopiert das gegebene Breitzeichen an jede Position in einem Breitzeichen-Array
(Funktion) |
|
|
weist den gegebenen Wert jedem Element in einem Bereich kopierend zu
(Funktions-Template) |
|
|
weist den gegebenen Wert N Elementen in einem Bereich kopierend zu
(Funktions-Template) |
|
|
(C++11)
|
prüft, ob ein Typ trivial kopierbar ist
(Klassen-Template) |
|
C-Dokumentation
für
memset
|
|