why does std::allocator::deallocate require a size? : <p><code>std::allocator</code> is an abstraction over the underlying memory model, which wraps the functionality of calling <code>new</code> and <code>delete</code>.  <code>delete</code> doesn't need a size though, but <a href="http://en.cppreference.com/w/cpp/memory/allocator/deallocate" rel="noreferrer">deallocate()</a> <em>requires</em> it.  </p>

<blockquote>
  <p><strong>void deallocate( T* p, std::size_t n );</strong><br>
  "The argument n must be equal to the first argument of the call to
  allocate() that originally produced p; otherwise, the behavior is
  undefined."  </p>
</blockquote>

<p>Why?  </p>

<p>Now I either have to make additional calculations before deallocating, or start storing the sizes that I passed to allocate.  If I didn't use the allocator I wouldn't have to do this.</p>
