In C ist eine Referenz eine Variable, die auf die Adresse einer anderen Variablen verweist. Bei der Untersuchung der Speicherzuordnung wirft dies Fragen zum von Referenzen belegten Platz im Vergleich zu anderen Datentypen auf.
Beachten Sie den Codeausschnitt:
int i = 42; int& j = i; int k = 44;
Wie erwartet belegen die Variablen i und k jeweils etwas 4 Bytes auf dem Stapel. j nimmt jedoch keinen Platz im Speicher ein. Dies liegt daran, dass eine Referenz selbst keinen Wert speichert; Es bindet einfach an die Adresse der Variablen, auf die es verweist, und fungiert so effektiv als Alias.
Wo nimmt also eine Referenz Platz ein, wenn sie als Funktionsargument übergeben wird?
Wenn eine Referenz vorhanden ist übergeben, weist der Compiler ihr einen temporären Speicherort auf dem Stapel der Funktion zu. An diesem Ort wird die Adresse der referenzierten Variablen gespeichert, sodass die Funktion direkt darauf zugreifen kann. Wenn in unserem Beispiel j an eine Funktion übergeben wird, enthält der Stapel der Funktion die Adresse der Variablen i.
In Bezug auf Arrays von Referenzen verbietet der C-Standard ausdrücklich deren Erstellung:
int&[] arr = new int&[SIZE]; // compiler error! array of references is illegal
Dies ist auf das Risiko baumelnder Referenzen zurückzuführen, die auf freigegebenen Speicher hinweisen können. Durch das Verbot von Array-Referenzen gewährleistet C die Speichersicherheit.
Das obige ist der detaillierte Inhalt vonWie wirken sich C-Referenzen auf die Speicherzuweisung aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!