This is the regular question generally you will get in C++ Interviews. Both new and malloc are used to allocate the dynamic memory. malloc is used in C and new is used in C++. And the basci difference is new calls the constructor to allocate the memory whereas malloc() is itself is a function and it wont call the constructor. Lets see the differences.
malloc:
new:
where ptr is pointer of typename(generally class name).
malloc:
- This is a function
- It will return the void pointer.
- Need to type cast to the required data type.
- It returns NULL if there is no enough memory.
- It works in C and C++
- need to use free to deallocate the memory
- This cann't be overleaded
- syntax:
- example:
int *ptr; ptr = (int *)malloc(10*sizeof(int)); // allocationg 10 bytes of int type //do something free(ptr); // deallocating the memory
new:
- new is an operator.
- It calls the constructor while allocating the memory and destructor while deallocating the memory
- It will return required pointer data type
- No need to type cast
- It will return bad exception when there is no enough memory
- It works only in C++
- Need to use delete for deallocating the memory
- its possible to overload the new operator
- Syntax:
where ptr is pointer of typename(generally class name).
- example:
int *p; p = new int; // allocating int datatype //do something delete p; // for deallocating the memory
No comments:
Post a Comment