Zuweisen von Strukturen, die Strings enthalten, mit Malloc
Beim Versuch, den Speicher für eine Struktur mit std::string-Mitgliedern mit malloc() zu verwalten, kommt es zu Segfehlern kann vorkommen. Dies liegt daran, dass malloc() eine Rohspeicherzuweisung bereitstellt, anstatt Objekte zu erstellen.
Verwendung von new für die Objektzuweisung
Um Speicher für eine Struktur mit std::string korrekt zuzuweisen Mitglieder, verwenden Sie new anstelle von malloc(). new erstellt das Objekt automatisch im zugewiesenen Speicher.
Beispiel:
#include <iostream> #include <string> struct example { std::string data; }; int main() { example *ex = new example; // Allocate memory using 'new' ex->data = "hello world"; std::cout << ex->data << std::endl; delete ex; // Release allocated memory when done }
Platzierung neu für Rohspeicherverwaltung
Wenn mit malloc() bereits Speicher zugewiesen wurde, ist es möglich, mit „placement new“ das Objekt darin zu erstellen Speicher.
Beispiel:
void *ex_raw = malloc(sizeof(example)); example *ex = new(ex_raw) example; // Construct the object in allocated memory using placement 'new'
Für die Objektkonstruktion wird jedoch im Allgemeinen die direkte Verwendung von „new“ der Platzierung „new“ vorgezogen.
Das obige ist der detaillierte Inhalt vonWie ordne ich Speicher für Strukturen, die Strings in C enthalten, richtig zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!