gpt4 book ai didi

c++ - 设计 : How to declare a specialized memory handler class

转载 作者:行者123 更新时间:2023-11-28 08:29:49 24 4
gpt4 key购买 nike

在嵌入式类型系统上,我创建了一个小对象分配器,它搭载在标准内存分配系统之上。这个分配器是一个 Boost::simple_segregated_storage<> 类,它完全满足我的需要——O(1) alloc/dealloc time on small objects at the cost of a touch of internal fragmentation。我的问题是如何最好地声明它。现在,它在我们的 mem 代码模块中声明为静态范围,这可能没问题,但感觉有点暴露,现在也永远链接到该模块。通常,我将其声明为单态或单例,但这使用了动态内存分配器(this 所在的位置)。此外,我们的动态内存分配器在我们的系统上发生静态对象初始化之前被初始化和使用(同样,内存管理器几乎是引擎最基本的组件。)为了解决这个问题 22,我添加了一个额外的“如果小内存分配器存在”来查看小对象分配器是否存在。那如果现在必须在每个小对象分配上运行。在事物的计划中,这几乎可以忽略不计,但它仍然困扰着我。

所以问题是,是否有更好的方法来声明内存管理器的这一部分,以帮助将其与内存模块分离,并且可能不会花费额外的 isinitialized() if 语句?如果此方法使用动态内存,请解释如何解决管理器的小对象部分初始化不足的问题。

最佳答案

一个好的准则是:说出你的意思,除非有充分的理由不这样做。这个分配器是一个全局静态对象,应该这样声明。现在,如果它的状态需要初始化,我会在初始化动态内存分配器的代码中执行此操作——因为这实际上是初始化内存分配系统工作的一部分,所以这又属于说出你的意思的标题。这将避免对每次调用进行不雅的条件检查。

关于c++ - 设计 : How to declare a specialized memory handler class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670781/

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