for object, malloc allocates memory in heap however doesn't invoke object's constructor to initialize the object. new allocates memory & also invokes constructor to initialize the object. free() and malloc() do not support object semantics, does not destruct and construct objects
For example : string * ptr = (string *)(malloc (sizeof(string))) Are not secure, and does not compute the size of the objects that it construct
The following return a pointer to void int *p = (int *) (malloc(sizeof(int))); int *p = new int;
Are not extensible delete and new can be overloaded in a class "delete" first calls object's termination routine (for example. its destructor) and after that releases the space the object engaged on the heap memory. If an array of objects was developed using new, then delete ought to be told that it is dealing along with an array by preceding the name along with an empty []:-
Int_t *my_ints = new Int_t[10];
...
delete []my_ints;