我只是有一个关于char数组如何处理内存池并为其分配其他变量类型的指针的快速问题。我正在处理一个使用char数组作为内存池的任务,并且我需要能够为它分配指针,并且我已经阅读了关于该主题的一些信息,但我不完全理解实际分配如何工作的一部分如:使用char数组的C++内存池
const int poolSize = 60000;
char pool[poolSize];
void* allocate(int aSize)
{
//.....
return ((void*) 0);
}
long* pointer;
pointer = (long *) allocate(sizeof(long));
*pointer = 0xDEEDEEEF;
我只是不完全得到具体的工作,因为一个char是1个字节,而长应该是4和它是如何与这样的工作时,我需要分配在4个点数组到一个长指针变量?也可以随意给出例子和解释,但请不要放弃整个程序应该如何工作,因为一旦我明确了解这个部分是如何工作的,我想自己弄明白。谢谢
除了你的'pool',你需要一些方法来跟踪哪些字节被使用。 'allocate'然后可以找到'aSize'可用的连续字节,将指针返回到它的开头,并将这些字节标记为已使用。 – 2013-02-23 07:40:41
因此,如果我要做一些事情,例如初始化池中的所有点到字符'F',例如,然后我可以检查连续的一定数量的F来知道它们是否为空,并将它们设置为'T'或别的东西来标记他们填充然后这将允许我跟踪这个。像这样或者其他方式初始化它们会更好吗?然后,为了解除分配,我只是返回一个指向该集合的第一个字节和变量的指针,然后返回并将其使用的字节标记为空闲的? – zfetters 2013-02-23 07:47:23
你应该看看C++分配器的概念。 – 2013-02-23 08:53:33