Both free(NULL) and ::operator delete(NULL) are allowed.  Does the allocator concept (e.g. std::allocator also allow deallocate(NULL,1), or is it required to put your own guard around it?
views:
30answers:
1
                +5 
                A: 
                
                
              You'll need to add your own check.
According to §20.4.1.1/8, deallocate requires:
p shall be a pointer value obtained from allocate(). n shall equal the value passed as the first argument to the invocation of allocate which returned p.
allocate throws an exception when storage can't be given (§20.4.1.1/7). In other words, allocate never returns 0, and therefore deallocate should never get a 0. Passing a 0 would lead to undefined behavior.
                  GMan
                   2010-06-23 18:50:30
                
              Thanks, that's what I was afraid of.
                  wrang-wrang
                   2010-06-24 16:19:28