Wie in der Frage gefordert.
std::string myVar; das maximale Zeichen, das er enthalten kann, wird durch Stack oder Heap? bestimmt.
Dankeschön
Wie in der Frage gefordert.
std::string myVar; das maximale Zeichen, das er enthalten kann, wird durch Stack oder Heap? bestimmt.
Dankeschön
Standardmäßig wird der Speicher, der für std::string
wird dynamisch zugewiesen.
Beachten Sie, dass std::string
hat eine max_size()
Funktion, die die maximale Anzahl der von der Implementierung unterstützten Zeichen zurückgibt. Die Nützlichkeit dieser Funktion ist jedoch fraglich, da es sich um ein Maximum der Implementierung handelt und andere Ressourcen, wie z. B. Speicher, nicht berücksichtigt werden. Ihre tatsächliche Grenze ist viel niedriger. (Versuchen Sie, 4 GB zusammenhängenden Speicher zuzuweisen, oder berücksichtigen Sie die Erschöpfung des Speichers an anderer Stelle).
A std::string
Objekt wird auf die gleiche Weise zugewiesen wie ein int
oder ein anderer Typ muss: auf dem Stapel liegen, wenn es sich um eine lokale Variable handelt, oder sie kann static
oder auf dem Heap, wenn new std::string
verwendet wird oder new X
donde X
enthält die string
usw..
Aber, das std::string
Objekt かもしれません mindestens einen Zeiger auf zusätzlichen Speicher enthalten, der von der Zuordnungsfunktion bereitgestellt wird, mit der basic_string<> instanziiert wurde - für den std::string
typedef
d.h. heap-allocated memory. Entweder direkt in der ursprünglichen std::string
Objektspeicher oder im Point-to-Heap zu finden sind:
一部 std::string
Implementierungen haben "short string"-Optimierungen, bei denen sie Strings mit nur wenigen Zeichen direkt in das String-Objekt selbst packen (aus Gründen der Speichereffizienz, oft unter Verwendung einer Art von Union mit Feldern, die für andere Zwecke verwendet werden, wenn die Strings länger sind). Bei anderen String-Implementierungen und selbst bei solchen mit "short-string"-Optimierungen, die mit Strings umgehen, die zu lang sind, um direkt in das std::string-Objekt zu passen, müssen sie Zeigern/Referenzen auf die Textdaten folgen, die im vom Allokator bereitgestellten (Heap-)Speicher gespeichert sind.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.