C++开发驱动中的重载问题

2013-04-10 11:39:01 · 作者: · 浏览: 190

  template <POOL_TYPE PoolType> class CAllocator

  {

  public:

  void* operator new(unsigned int size)

  {

  return ExAllocatePoolWithTag(PoolType, size, OSNTAG);

  }

  void* operator new[](unsigned int size)

  {

  return ExAllocatePoolWithTag(PoolType, size, OSNTAG);

  }

  PVOID operator new (size_t Size, void *addr)

  {

  return addr;

  }

  VOID operator delete(PVOID pMemory)

  {

  if(pMemory!=NULL)

  ExFreePool(pMemory);

  }

  VOID operator delete[](PVOID pMemory)

  {

  if(pMemory!=NULL)

  ExFreePool(pMemory);

  }

  };

  typedef CAllocator<NonPagedPool> CNPAllocator;

  typedef CAllocator<PagedPool> CPAllocator;