我只是有一個關於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