Speicherzuordnung von Vektoren in C
Bei der Arbeit mit Vektoren in C ist es wichtig, deren Speicherzuordnungseigenschaften zu verstehen. Betrachten Sie die folgenden Aussagen:
- vector vect;
- vector *vect = neuer Vektor;
- vector vect;
Stack- oder Heap-Zuordnung?
-
vector vect: Dadurch wird der Vektor-Header auf dem Stapel zugewiesen, während die tatsächlichen Elemente auf dem Heap zugewiesen werden (freier Speicher).
-
vector *vect = new vector;:Alles, einschließlich des Vektorzeigers und der Elemente, wird auf dem Heap zugewiesen.
-
vector vect: Der Vektor wird auf dem Stapel zugewiesen, aber die darin enthaltenen Zeiger werden auf dem Heap zugewiesen. Die Ziele dieser Zeiger können je nach Nutzung variieren.
Interne Speicherzuweisung
Für Vektoren und andere STL-Container erfolgt die Speicherzuweisung wie folgt:
- Der Container-Header, der Metadaten wie Größe und Kapazität speichert, wird normalerweise auf dem zugeordnet Stapel.
- Die tatsächlichen Elemente werden dynamisch im freien Speicher zugewiesen.
- Bei Vektoren von Zeigern werden die Zeiger selbst auch im freien Speicher zugewiesen, während die Objekte, auf die sie zeigen, variieren können Speicherzuweisungsmechanismen.
Das obige ist der detaillierte Inhalt vonWie weist C Speicher für Vektoren zu: Stapel oder Heap?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!