As described above, the new operator is just an interface to malloc() routine. However, there are more features in the operator.
The statement
Object *array = new Object[size](parameters, ...);allocates a memory block of sizeof(Object) * size bytes, and the constructor of the object is called for each instance. The size is stored at the extra bytes at the head of the memory block.
The statement
Object *obj = new(place) Object(parameters, ...);does not call the malloc() routine but places the object at the place which is a pointer to an appropriate memory block. This scheme is integral to the interface to the mapping of objects in the persistent storage.