gpt4 book ai didi

c++ - 如何根据 STL 列表中的元素数量分配内存?

转载 作者:行者123 更新时间:2023-11-30 03:34:24 25 4
gpt4 key购买 nike

有一个选项可以为 STL 容器提供自定义分配器。但是,我找不到可以在池空间用完后增加内存池 block 大小的实现。 STL 分配器如何读取列表容器的大小并自行增长 block 大小?

例如, block 大小从 1、2、4 等开始,然后当容器内有 1、3、7 个节点时, block 大小会在下一次插入发生后立即增长。

最佳答案

标准容器使用提供的分配器(调用它的成员函数)来分配它们需要的内存。相反的情况不会发生——分配器接口(interface)中没有任何东西,正如标准所指定的那样,允许它获得关于哪个容器正在使用它的信息。这意味着没有自定义分配器 - 只要它具有与标准要求相同的接口(interface) - 就可以查询容器大小。

为了做你想做的事,你需要一个具有不同于标准分配器接口(interface)的专用分配器,以及一个知道如何与那个特殊用途的分配器。试图让您的自定义分配器与标准容器一起工作,或者让您的自定义容器与标准分配器一起工作,都不会很好地工作 - 接口(interface)将不兼容。

此外,您描述的行为(每次分配加倍)特定于您对标准库的实现。尽管该分配策略有些常见,但标准并不要求它。允许其他实现 - 有些实现 - 使用不同的分配策略。

最后,计算/估计容器大小的上限可能会更容易,使用它来计算您的程序运行需要多少内存,并至少安装该数量的内存。

关于c++ - 如何根据 STL 列表中的元素数量分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42065012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com