在 C 中,引用是引用另一個變數位址的變數。在檢查記憶體分配時,與其他資料類型相比,這會引發有關引用佔用的空間的問題。
考慮程式碼片段:
int i = 42; int& j = i; int k = 44;
如預期的那樣,變數 i 和 k 各自佔用堆疊上有 4 個位元組。然而,j 不佔用記憶體空間。這是因為引用本身並不會儲存值;而是引用本身儲存值。它只是綁定到它引用的變數的地址,有效地充當別名。
那麼,當引用作為函數參數傳遞時,引用在哪裡佔用空間?
當引用是通過後,編譯器會為其指派函數堆疊上的一個暫存位置。該位置儲存被引用變數的位址,允許函數直接存取它。在我們的範例中,當 j 傳遞給函數時,函數的堆疊保存變數 i 的位址。
關於引用數組,C 標準明確禁止創建它們:
int&[] arr = new int&[SIZE]; // compiler error! array of references is illegal
這是由於懸空引用的風險,它可能指向已釋放的記憶體。透過禁止數組引用,C 確保了記憶體安全。
以上是C 引用如何影響記憶體分配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!