我一直在阅读有关内存管理的不同文章,为了准备我的架构工作,我最担心的是分配器将如何在整个代码库中使用、创建和处理。其中一个问题是,我的设计总是将分配器放在全局范围内,因为我没有一个典型的单例设计来包含分配器,它们没有真正的位置可以存放。我想避免使用全局变量,因为使用全局变量通常会出现所有问题。
这将导致在头文件中仅有新定义,而在.cpp中有声明。这个.cpp文件将只包含
如果我的设计是这样的,那么
这导致我设计了类似以下的东西:
void* operator new(size_t size, uint32_t type)
{
return gAllocator.Alloc(size, type);
}
这将导致在头文件中仅有新定义,而在.cpp中有声明。这个.cpp文件将只包含
gAllocator
,且只在.cpp文件中可访问 (除了new调用之外的任何地方)。如果我的设计是这样的,那么
gAllocator
是否仍然是全局变量?如果不是,它将被认为是什么类型的变量?如果它只存在于命名空间的范围内呢?