假設我在C++中創建了一個STL映射對象,即map<string,char>mymap``$
。現在,我想知道內存是如何分配給這個對象的?我的困惑之處在於沒有動態分配,我們不知道之前的容器大小。那麼,從哪裏以及如何將內存分配給對象mymap?C++ STL對象的內存分配
0
A
回答
1
那麼,從哪裏以及如何將內存分配給對象mymap?
所有標準容器的默認分配器是std::allocator
,從容器獲取內存的位置和釋放位置到內存的完成位置。您可以使用自定義分配器,然後根據需要跟蹤所有分配和釋放。
3
沒有動態分配
肯定有,但它的引擎蓋下。 std::map
通常以樹的形式存儲,因此無論何時將新對象插入新節點,都會分配新節點。動態。僅僅因爲你沒有明確寫出new
,並不意味着它不會發生。
在std::map
的析構函數上,節點被自動刪除。但請注意,如果節點包含動態分配的對象,則這些對象不會被地圖刪除。
+0
請讓我知道,如果內存是動態分配的,那麼在引擎蓋下是否釋放內存? – nirprat 2012-07-16 19:58:00
+0
@nirprat是的,讀最後一個短語。 – 2012-07-16 20:06:58
相關問題
- 1. 對象的內存分配
- 2. 對象指針的C++內存分配
- 3. 分配內存到一個對象c#
- 4. 對象內存分配
- 5. STL兼容的內存分配器庫
- 6. java中對象的內存分配
- 7. STL再分配C++
- 8. 如何將stl對象存儲在共享內存(C++)中?
- 9. 類對象的內存分配
- 10. 對象的動態內存分配
- 11. 檢查對象的內存分配
- 12. 創建對象時的內存分配
- 13. 對象數組的內存分配
- 14. 對於C程序的內存分配
- 15. C++ stl庫容器具有動態內存分配?
- 16. C++ STL內存分配器編譯錯誤
- 17. objective-c分配的兩個對象具有相同的內存?
- 18. 內存分配C++
- 19. 內存分配,C++
- 20. C內存分配
- 21. C++分配內存
- 22. 內存分配C
- 23. C++分配對象?
- 24. C#對象分配
- 25. 嵌套對象內存分配?
- 26. JSON對象內存分配vs變量
- 27. 在共享內存中分配對象
- 28. 內存分配沒有創建對象
- 29. 新鮮共享引用對象時分配的內存c#.net?
- 30. 使用c#和opencl的內存對象分配失敗
當然有動態分配(可能不一定是從開始,但肯定是在開始插入東西后)。這只是在課堂上。 – Jon 2012-07-16 19:43:12