Heim > Backend-Entwicklung > C++ > Wo speichern globale Variablen in C ihren Speicher: Stack oder Heap?

Wo speichern globale Variablen in C ihren Speicher: Stack oder Heap?

DDD
Freigeben: 2024-12-02 09:22:11
Original
969 Leute haben es durchsucht

Where Do Global Variables in C   Store Their Memory: Stack or Heap?

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:

  1. Code (Textsegment)
  2. Initialisierte Daten (Daten Segment)
  3. Nicht initialisierte Daten (BSS-Segment)
  4. Heap
  5. Stack

Globale Variablenzuordnung

Wenn eine globale Variable deklariert wird, wird ihr Speicher entweder im Datensegment oder im BSS zugewiesen Segment.

  1. Datensegment: Enthält initialisierte globale Variablen. Seine Größe wird zur Kompilierzeit festgelegt.
  2. Bss-Segment: Enthält nicht initialisierte globale Variablen. Seine Größe ist ebenfalls zur Kompilierzeit festgelegt, sein Inhalt wird jedoch standardmäßig auf Nullen initialisiert.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage