new is an operator, whereas malloc() is a fucntion.
new returns exact data type, while malloc() returns void * (pointer of type void).
malloc(), memory is not initialized and default value is garbage, whereas in case of new, memory is initialized with default value, like with 'zero (0)' in case on int.
delete and free() both can be used for 'NULL' pointers.