wo Speicher für externe Variable gespeichert wird und durch welche Datei

8

Ich habe über externe Variable gelesen, aber keine Antwort gefunden, die sich auf die Speicherzuweisung bezieht. Meine Frage lautet: Wer reserviert den Speicher für die externe Variable und in welchem ​​Speichersegment.

%Vor%

hier Datei 1 wird Speicher für eine oder Datei zuweisen 2. In Datensegment oder im Stapel?

Danke.

    
anand 02.08.2013, 06:11
quelle

2 Antworten

7
  

Das externe Schlüsselwort bedeutet "deklarieren ohne definieren". Mit anderen Worten, es ist eine Möglichkeit, eine Variable explizit zu deklarieren oder eine Deklaration ohne Definition zu erzwingen.

Also haben Sie in file2 gerade die Variable ohne Definition deklariert (kein Speicher reserviert). In file1 haben Sie eine Variable vom Typ integer deklariert und definiert. Hier haben Sie Speicher im BSS-Segment zugewiesen, weil Sie ein nicht initialisiertes globales (für C) haben.

In C ++ werden die Globals in einem Prozessdatenbereich gespeichert.

Unterschied zwischen Deklaration und Definition:

  

Um zu verstehen, wie sich externe Variablen auf das Schlüsselwort extern beziehen, müssen Sie den Unterschied zwischen dem Definieren und Deklarieren einer Variablen kennen.

     

Wenn eine Variable definiert ist, ordnet der Compiler Speicher für diese Variable zu und initialisiert möglicherweise auch ihren Inhalt auf einen Wert. Wenn eine Variable deklariert wird, benötigt der Compiler, dass die Variable an anderer Stelle definiert wird.

     

Die Deklaration informiert den Compiler darüber, dass eine Variable mit diesem Namen und diesem Typ existiert, aber der Compiler muss ihm keinen Speicher zuweisen, da er anderweitig zugewiesen wurde.

    
Pierre Fourgeaud 02.08.2013, 06:29
quelle
5

In Datei 2 wurde eine Variable vom Typ integer namens a deklariert (erinnern Sie sich an keine Definition, d. h. keine Speicherzuweisung für a bisher). Und wir können diese Erklärung so oft wie nötig machen. In Datei 1 ist eine Variable vom Typ integer namens a deklariert und definiert. (Denken Sie daran, dass die Definition der Supersatz der Deklaration ist). Hier wird auch der Speicher für a zugeordnet.

    
Hitesh Vaghani 02.08.2013 06:20
quelle

Tags und Links