For debugging purposes.
MSVC does that in the debug version of new. It actually allocate a bit more
then user request. The user requested memory is initialized with a fixed
value (0xCD). The extra memory are used as overflow buffer and is
initialized with another value (0xFD).
The debug version of delete also initialized the freed memory with yet
another value (0xDD).
That way, using the debugger, one can visually "see" that whether the
allocated blocks are properly initialized - personally, I find that this is
especially helpful when debugging.