在嵌入式类型系统上,我创建了一个小型对象分配器,它搭载在标准内存分配系统之上。这个分配器是一个 Boost::simple_segregated_storage<> 类,它完全符合我的需要 - 在小对象上的 O(1) alloc/dealloc 时间,代价是一些内部碎片。我的问题是如何最好地声明它。现在,它是在我们的 mem 代码模块中声明的范围静态,这可能很好,但感觉有点暴露在那里,现在也永远链接到该模块。通常,我将它声明为单态或单例,但这使用动态内存分配器(它所在的位置)。此外,我们的动态内存分配器正在初始化并在我们的系统上发生静态对象初始化之前使用(同样,内存管理器几乎是引擎的最基本组件。)为了解决这个问题 22,我添加了一个额外的“如果小内存分配器存在”来查看小对象分配器是否存在。如果现在必须在每个小对象分配上运行。在事物的计划中,这几乎可以忽略不计,但它仍然困扰着我。
所以问题是,是否有更好的方法来声明内存管理器的这一部分,有助于将其与内存模块分离,并且可能不会花费额外的 isinitialized() if 语句?如果此方法使用动态内存,请说明如何解决管理器小对象部分初始化不足的问题。