一個向量應該動態增長,並有一個連續的內存位置,通過使用operator new分配器類獲得。我的問題是,有多少內存沒有默認向量(當我們沒有指定一個預留大小)默認情況下使用new進行分配,因此它可以隨後增長和添加元素。默認向量內存大小
默認向量內存大小
回答
它的實現定義(即可能在多個編譯器之間有所不同)。
使用std::vector::capacity()
函數可以查詢分配的內存總量。
要繼續閱讀,看看這篇文章:size vs capacity of a vector?。
這取決於實施,你無法知道。實際上,即使您指定了要保留的大小,實現仍然可以自由保留,不管它多麼令人滿意(大小隻是一個提示,AFAIK)。
AFAIK,這是錯誤的。 reserve()具有可觀察的後置條件,下一次調用capacity()會得到相等或更大的值。只需在這裏檢查:http://www.gotw.ca/gotw/074.htm(「...調用reserve()將保證向量的容量()至少爲2」)。 –
@ChristianHackl我不明白爲什麼'vector'實現必須在這個時候分配任何內存,不管它從'capacity()'返回。例如,它可能會選擇推遲分配,直到試圖訪問內存爲止。它也可以選擇返回一個比傳遞給reserve()更大但小於實際分配的數字(不確定爲什麼你想要,但我不明白爲什麼它不會)。 – alastair
說實話,我不知道標準的措辭是否真的會允許這樣做。像這樣的技術(即處理容量和儲備中的抽象值)是否能夠從實施質量的POV中獲得意義呢? –
- 1. 大容量內存默認目錄
- 2. 默認大小
- 3. 默認大小
- 4. SystemIcons默認大小
- 5. 默認動態存儲器大小
- 6. 默認JVM內存
- 7. TinyMCE默認字體大小
- 8. ERLANG - 默認浮點大小
- 9. WPF控件默認大小
- 10. 增加默認大小
- 11. Blocking collection的默認大小
- 12. Google圖表默認大小
- 13. Vimeo默認視頻大小
- 14. 默認UITableViewCellStyleSubtitle字體大小?
- 15. iterm2默認窗口大小
- 16. 微小MCE默認內容
- 17. 熱點默認最大堆大小
- 18. 內存大小
- 19. JVM內存默認值
- 20. 向量指針vs向量值對大型內存塊和小型內存塊的性能損失
- 21. 將ggplot中的圖例大小減小到默認大小
- 22. 優化存儲動態大小的向量的向量
- 23. 邏輯變量的內存大小
- 24. 內存中變量的大小x86
- 25. 固定大小向量的C++向量
- 26. Sqlserver內存大小
- 27. 內存大小UIImageView
- 28. .NET內存大小
- 29. 內存表大小
- 30. 的Android的ViewGroup大小默認
爲什麼不使用'sizeof()'? –
@RikayanBandyopadhyay因爲'sizeof()'會告訴你'vector'類型是多大;它不會告訴你它爲存儲預留了多少空間。 –
alastair
您可以檢查vector.capacity()的輸出以查找未使用的矢量,然後將其與元素的大小相乘。 – dutt