The main difference between new and malloc is that new invokes the object's constructor and the corresponding call to delete invokes the object's destructor.
Also 'new' is only available in C++. malloc() is available in both C and C++.
There are other differences:
1. new is type-safe, malloc returns objects of type void*
2. new throws an exception on error, malloc returns NULL and sets errno
3. new is an operator and can be overloaded, malloc is a function and cannot be overloaded
4. new, which allocates arrays, is more intuitive and type-safe than malloc
5. malloc-derived allocations can be resized via realloc, new-derived allocations cannot be resized
6. malloc can allocate an N-byte chunk of memory, new must be asked to allocate an array of, say, char types