2012-01-19 72 views
3

我有一個對象(即圖像),佔用1MB的內存。 我將這個圖像傳遞給一個函數,它修改它。 如果我通過引用將此圖像傳遞到函數中,整個1MB將被複制,還是隻是其在內存中的位置?通過引用傳遞時的內存使用情況?

+3

該術語本身說明它究竟是什麼.. – harold

+2

C沒有引用 - 所以我刪除了C標籤。 C++確實有參考。 –

回答

6

通過引用傳遞會爲對象創建別名。唯一使用的內存是分配用於保存別名的堆棧空間。

+0

除了僞裝指針之外,別名還有別的嗎? (僞裝是你不需要使用指針解引用符號來訪問引用後面的對象。) –

+0

是的。基本上是一個const指針 – rerun

+1

@JonathanLeffler是的,它可以是* nothing而不是指針。 –

2

只是將對象的引用位置傳遞到堆棧。

就這樣我們在這裏很清楚,這隻適用於C++。在C中,你總是按照價值傳遞。你可以通過傳入指針位置來模仿傳遞引用(這是C++中的引用如何工作,如果我沒有弄錯的話)。

9

不只是一個指針 - 引用只是一個帶有花哨語法的指針,所以它不會嚇倒孩子。

+2

爲了嚇唬孩子們+1 ......我敢打賭,他們當之無愧;) –

2

當您通過引用傳遞時,您不會複製該對象,而只會複製該對象的引用。這是通過引用傳遞的重點。

1

只是將圖像對象的引用發送給函數,而不是整個圖像。