我有一個只有10個變量的項目列表。但是這些項目有很多代碼,我想補充更多。我很好奇這將如何影響我的結構的大小。我的直覺告訴我,每個人都有一個堆棧,但有爭論被傳遞,而我可能沒有考慮到我不確定。那麼粗略地說,代碼添加到我的數據結構中有多少?代碼量是否使數據結構更大?
4
A
回答
10
代碼不會添加到您的結構的大小。
3
與類關聯的代碼通常不會每個實例重複一次,因此添加代碼不應影響您的數組列表的大小。
3
即使您將代碼放在與數據相同的一組大括號中,編譯器也會將它分離出來並放入不同的存儲器部分。
這樣,您只需要代碼的一個副本 - 沒有必要爲每個使用它的項目創建一個新副本。
只有在非常大的項目中,編譯後的代碼的實際大小才成爲問題;通常情況下,它並不比源文本大得多。在小程序中,通常最多隻有幾百K或者一兩個兆或兩個。現代機器不值得擔心。
1
代碼不存儲在堆上。
無論您創建了多少個對象,只會將代碼放在一個地方。
1
對象工作的類成員函數存儲方式不同,它對對象的大小沒有影響。在類中的數據成員將成爲對象的一部分,並且如果您更改變量的類型,則對象大小將會改變。
例如:
class Test
{
1. member functions
//it does not matter how many functions you have, this section does not contribute
// to object size
2. member variables
//this contributes to the object size, define an int or double etc will change the object size
}
1
每個對象不具有它自己的堆棧。堆棧是每個線程/進程,而不是每個對象。
2
對象實例的大小(大部分)是其數據成員的總和。函數成員不是按實例存儲的,並且對實例大小沒有影響。
你的程序每個線程有一個棧。當一個函數被調用時,堆棧內存被保留給該函數的每個參數和變量,並在返回時被釋放。
如果在沒有新建的函數中實例化對象,則該對象將存儲在堆棧中。如果使用new,則只有引用存儲在堆棧中,並且實例本身存儲在堆中。
:)
相關問題
- 1. 是否有荷蘭代碼(RIASEC)數據的結構化來源?
- 2. 更好的代碼結構?
- 3. 數據結構爲更大數量的文件
- 4. 大量數據導入的表結構
- 5. Java:數據結構存儲大量字
- 6. C代碼與C++數據結構
- 7. 更高效/時尚代碼,數據結構
- 8. c#大量數據的代碼優化
- 9. java是否有「LinkedConcurrentHashMap」數據結構?
- 10. R是否有Set數據結構?
- 11. PHP是否有Set數據結構?
- 12. 什麼是矢量數據結構
- 13. 傳遞大的數據結構以非託管代碼使用固定指針
- 14. C++數據結構大O
- 15. Mongodb:大數據結構
- 16. 誰說「數據結構是代碼的一半」?
- 17. 數據庫結構:此結構是否適用於m:m?
- 18. 使用結構,無法打印代碼中的房屋數量
- 19. 保存大量數據的最佳數據結構?
- 20. 將大量圖形數據結構存儲在數據庫中
- 21. 用於處理大量數據的庫/數據結構
- 22. 從更大的數據類型(結構)鑄造到更小的結構
- 23. 是否有可能使此矢量化MATLAB代碼更快?
- 24. 使用數據結構代替hash_map
- 25. 將BigQuery與大量數據結構化爲輸入構造
- 26. 使用變量結構的數據
- 27. Journey測量 - 數據結構
- 28. 其中Data Studio使用的數據結構代碼
- 29. 短變量聲明是否會導致Go中代碼結構不完整?
- 30. Golang代碼結構
實際上,編譯後的代碼通常比源表示要小得多。 – 2009-05-05 06:00:08