我有一個對象(即圖像),佔用1MB的內存。 我將這個圖像傳遞給一個函數,它修改它。 如果我通過引用將此圖像傳遞到函數中,整個1MB將被複制,還是隻是其在內存中的位置?通過引用傳遞時的內存使用情況?
回答
通過引用傳遞會爲對象創建別名。唯一使用的內存是分配用於保存別名的堆棧空間。
除了僞裝指針之外,別名還有別的嗎? (僞裝是你不需要使用指針解引用符號來訪問引用後面的對象。) –
是的。基本上是一個const指針 – rerun
@JonathanLeffler是的,它可以是* nothing而不是指針。 –
只是將對象的引用位置傳遞到堆棧。
就這樣我們在這裏很清楚,這隻適用於C++。在C中,你總是按照價值傳遞。你可以通過傳入指針位置來模仿傳遞引用(這是C++中的引用如何工作,如果我沒有弄錯的話)。
不只是一個指針 - 引用只是一個帶有花哨語法的指針,所以它不會嚇倒孩子。
爲了嚇唬孩子們+1 ......我敢打賭,他們當之無愧;) –
當您通過引用傳遞時,您不會複製該對象,而只會複製該對象的引用。這是通過引用傳遞的重點。
只是將圖像對象的引用發送給函數,而不是整個圖像。
- 1. 如何在這種情況下通過引用傳遞價值?
- 2. Datagridview過多的內存使用情況
- 3. 通過引用傳遞/存儲數組?
- 4. 通過引用傳遞'值類型'參考 - 內存佔用
- 5. 通過接口調用對象的方法時的內存使用情況?
- 6. 通過引用傳遞與值傳遞
- 7. 通過Boost的file_mapping和mapped_region最小化內存使用情況?
- 8. 通過getMemoryMXBean()和jvisualvm獲得內存使用情況的差異?
- 9. Tcl_Format內存使用情況
- 10. Silverlight內存使用情況
- 11. BlackBerry內存使用情況
- 12. php內存使用情況
- 13. iphone內存使用情況
- 14. IronPython內存使用情況
- 15. CCLabelBMFont內存使用情況
- 16. Android內存使用情況
- 17. GPUImage內存使用情況
- 18. Java內存使用情況
- 19. Linux內存使用情況
- 20. Listview內存使用情況
- 21. V8內存使用情況
- 22. 內存使用情況
- 23. java內存使用情況
- 24. IIS內存使用情況
- 25. Silverlight內存使用情況
- 26. cmd內存使用情況
- 27. MYSQL內存使用情況
- 28. mod_wsgi內存使用情況
- 29. redis內存使用情況
- 30. SqlDataAdapter內存使用情況
該術語本身說明它究竟是什麼.. – harold
C沒有引用 - 所以我刪除了C標籤。 C++確實有參考。 –