繁体   English   中英

C ++ STL对象的内存分配

[英]Memory allocation for C++ STL objects

假设我正在C ++中创建STL map的对象,即map<string,char>mymap``$ 现在,我想知道如何将内存分配给该对象? 我的困惑点是,没有动态分配,而且我们之前也不知道容器的大小。 那么,从何处以及如何向对象mymap分配内存?

没有动态分配

当然有,但是在幕后。 std::map通常存储为树,因此无论何时将新对象插入树中,都会分配一个新节点。 动态。 仅仅因为您没有明确编写new ,并不意味着它不会在后台发生。

std::map的析构函数std::map ,将自动删除节点。 但是请注意,如果节点包含动态分配的对象,则这些对象将不会被映射删除。

那么,从何处以及如何将内存分配给对象mymap?

所有标准容器的默认分配器是std::allocator ,从您的容器获取内存并从中释放到完成内存为止。 您可以使用自定义分配器,然后根据需要跟踪所有分配和释放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM