effectiveC++(八)(七)

2010-12-26 23:03:45 · 作者: · 浏览: 6593
小的删除请求转给::operator delete:

class base {                       // 和前面一样,只是这里声明了
public:                            // operator delete
  static void * operator new(size_t size);
  static void operator delete(void *rawmemory, size_t size);
  ...
};

void base::operator delete(void *rawmemory, size_t size)
{
  if (rawmemory == 0) return;      // 检查空指针

  if (size != sizeof(base)) {      // 如果size"错误",
    ::operator delete(rawmemory);  // 让标准operator来处理请求
    return;                       
  }

  释放指向rawmemory的内存;

  return;
}

可见,有关operator new和opera