operator new 和operator delete的重载应用

来源:互联网 发布:淘宝详情页怎么制作 编辑:程序博客网 时间:2024/06/05 00:24
#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;}

0 0
原创粉丝点击