#include <iostream>
using namespace std;
/*
重载后的operator new实现的功能是,看一看刚刚回收的垃圾堆上还有没有位置,
有位置的话,就直接拿一块下来,用来初始化。
*/
class FreeListBase
{
public:
FreeListBase(): next(NULL){};
virtual ~FreeListBase();
void* operator new(size_t size);
void operator delete(void* pDeallocation);
private:
static FreeListBase* m_pFreeList;
FreeListBase* next;
};
FreeListBase:: ~FreeListBase()
{
}
void* FreeListBase:: operator new(size_t size)
{
if (m_pFreeList)
{
void* p = static_cast<void*>(m_pFreeList); //安全的C++类型转换
m_pFreeList = m_pFreeList->next;
return p;
}
else
{
return ::operator new(size);
}
}
void FreeListBase:: operator delete(void* pDeallocation)
{
FreeListBase* p = static_cast<FreeListBase*>(pDeallocation);
p->next = m_pFreeList;
m_pFreeList = p;
}
FreeListBase* FreeListBase:: m_pFreeList = NULL;
int main()
{
return 0;
}