C ++ STL问题:分配器

C ++ STL问题:分配器

C++ STL question: allocators

我对C ++ STL有一个(可能很愚蠢的)问题。 当我制作一个容器(向量,集合,映射等)时,它是分配在堆栈上还是堆上? 如果我进行设置并放置500万个字符串,我是否需要担心堆栈溢出?


默认情况下,STL类从堆中分配其内部缓冲区,尽管这些类还允许自定义分配器,这些分配器允许用户指定要从中分配的备用位置-例如 共享内存池。


STL容器的默认分配器使用new和delete运算符,因此无论所使用的类型是哪种路由。 (通常,它来自堆,除非您执行某些操作来覆盖它。)

分配500万个字符串不会导致堆栈溢出。 即使您创建了一个基于堆栈的分配器,它甚至可能在您插入一个字符串之前就溢出了。


容器本身分配在您决定的位置(可以是堆栈,堆,对象的成员等),但是默认情况下,如其他描述的那样,容器使用的内存是在免费存储区中获取的(通过new和delete管理) 这与堆(通过malloc / free管理)不同。

不要将两者混在一起!


推荐阅读

    linux端口映射命令?

    linux端口映射命令?,工具,设备,电脑,系统,服务,网站,不了,名字,通信,环境,在l

    linux空间分配命令?

    linux空间分配命令?,系统,数据,情况,分区,图片,地址,位置,软件,管理,信息,lin

    域名映射命令linux?

    域名映射命令linux?,地址,网络,信息,系统,服务,命令,电脑,管理,网址,数字,如

    linux保留堆栈命令?

    linux保留堆栈命令?,地址,工作,系统,信息,管理,命令,目录,代码,名称,连续,lin

    分配磁盘命令linux?

    分配磁盘命令linux?,管理,号码,系统,信息,磁盘,配额,命令,技术,单位,工作,lin

    linux命令分配文件?

    linux命令分配文件?,管理,系统,命令,文件,基础,工具,标准,名称,情况,分区,lin

    python创建一个集合?

    python创建一个集合?,异常,代码,括号,元素,函数,方法,两个,整数,操作,字符串

    Python内存分配

    Python内存分配,代码,对象,变量,情况,培训,技术,名字,赋值,声明,别名,一、前

    Python集合和时间复杂度

    Python集合和时间复杂度,项目,时间,数据,数字,照片,情况,通用,培训,平均,表

    Python集合类型

    Python集合类型,检测,位置,培训,元素,对象,实例,成员,操作,子集,类型,python

    python3中如何创建集合

    python3中如何创建集合,数据,培训,元素,类型,字符串,列表,对象,括号,逗号,

    python集合要怎么用

    python集合要怎么用,培训,数字,数据,元素,方法,错误,语法,表示,类型,结果,py

    python空集合如何表示

    python空集合如何表示,数据,培训,表示,函数,类型,嵌套,赋值,括号,序列,字典

    python集合的并集操作

    python集合的并集操作,培训,操作,参数,更多,语法,符号,实例,元素,以上,两个