Konstruieren eines trivial kopierbaren Objekts mit memcpy
Bei der Arbeit mit C können Entwickler auf Fragen bezüglich der Gültigkeit der Verwendung von memcpy zum Kopieren stoßen Darstellungsbytes eines Objekts. Insbesondere bestehen Zweifel, ob es sich bei diesem Akt um eine Objektkonstruktion oder -zuweisung handelt.
Diese Frage bleibt ungeklärt, da der C-Standard dieses Szenario nicht explizit berücksichtigt. Bestimmte Vorschläge und Diskussionen geben jedoch Hinweise zu diesem Thema.
Perspektive des offiziellen Standards
Im aktuellen C 14-Standardentwurf heißt es: „Ein Objekt wird erstellt [.. .] durch eine Definition, durch einen neuen Ausdruck oder bei Bedarf durch die Implementierung zum Kopieren zwischen bereits instanziierten Objekten.
Vorschlag p0593Der Vorschlag p0593 versucht, dieses Problem anzugehen und die implizite Erstellung von Objekten für die Objektmanipulation auf niedriger Ebene zu definieren. Es schlägt vor, dass Objekte ausreichend trivialer Typen automatisch im neu zugewiesenen Speicher erstellt werden, um ein wohldefiniertes Verhalten sicherzustellen.
Gemäß p0593 sollten die folgenden Vorgänge implizit Objekte erstellen:
Erstellung eines Arrays von char, unsigned char oder std::byteDie Diskussion über [ub]-Typ-Wortspiele zur Vermeidung von Kopiervorgängen verdeutlicht die Komplexität zusätzlich dieses Themas.
Insgesamt sind die aktuellen Leitlinien zu diesem Thema offen für Interpretationen, aber Vorschläge wie p0593 zielen darauf ab, Klarheit und definiertes Verhalten für diese Vorgänge zu schaffen.
Das obige ist der detaillierte Inhalt vonKann memcpy verwendet werden, um ein trivial kopierbares Objekt in C zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!