Speicherzuweisung für globale Variablen in C: Stack vs. Heap
Wenn in C eine Datenstruktur global deklariert wird, stellt sich die Frage, ob Es verbraucht Stapelspeicher oder Heapspeicher. Um dies zu verstehen, beschäftigen wir uns mit dem Speicherlayout eines typischen C-Prozesses.
Speicherlayout eines C-Prozesses
Ein C-Prozess weist normalerweise fünf verschiedene Speicherbereiche zu:
Globale Variablenzuordnung
Wenn eine globale Variable deklariert wird, wird ihr Speicher entweder im Datensegment oder im BSS zugewiesen Segment.
Daher werden globale Variablen im Datensegment oder BSS-Segment gespeichert, die Teil des sind statischer Speicherdem Programm zugewiesen.
Beispiel
Im Gegebenen Beispielsweise ist das Array arr eine globale Variable vom Typ struct AAA. Es wird entweder im Datensegment oder im BSS-Segment zugewiesen, je nachdem, ob es initialisiert (mit Standardwerten) oder nicht initialisiert (enthält Müllwerte) ist.
Fazit
Zusammenfassend lässt sich sagen, dass globale Datenstrukturen in C Speicher aus dem dem Programm zugewiesenen statischen Speicher verbrauchen, insbesondere aus dem Datensegment oder BSS-Segment, die weder Teil des Stapel- noch des Heap-Speichers sind Bereiche.
Das obige ist der detaillierte Inhalt vonWo speichern globale Variablen in C ihren Speicher: Stack oder Heap?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!