Summary
They're a package deal: Every class-specific overload void* operator new( parms ) must be accompanied by a corresponding overload void operator delete(void*, parms ) , where parms is a list of extra parameter types (of which the first is always std::size_t ). The same goes for the array forms new[] and delete[] .