我想知道的很简单——如果我们创建一个 DLL,用静态运行时编译它,而在它的代码中我们将创建一个从 std::allocator 继承的简单分配器,我们是否有可能让 N 个不同的堆只使用这个库堆(一个带有分配器)用于所有 N 堆的内存管理?以及如何创建这样的分配器?
问问题
527 次
我想知道的很简单——如果我们创建一个 DLL,用静态运行时编译它,而在它的代码中我们将创建一个从 std::allocator 继承的简单分配器,我们是否有可能让 N 个不同的堆只使用这个库堆(一个带有分配器)用于所有 N 堆的内存管理?以及如何创建这样的分配器?
在 Windows 下,可以创建私有堆。查看 MSDN 上的堆函数。但是,C++ 标准库分配器具有无状态接口。因此,相同类型的两个分配器必须是可互换的(一个分配的内存可以由另一个释放)。
所以,是的,您可以实现这一点,但不能使用std::allocator
.