In C we used malloc(), free(), but in C++ youare using new, delete, but in C we also have realloc, which will alloc the new block and
C++ doesn't have a new/delete equivalent of C's realloc.
The probable reason (although it is not mentioned anywhere in the Standard) is because of constructors that can throw: how should it behave if, while reallocating, a constructor throws? The handling of this case is best left to the programmer because there is not one true answer.