[英]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.