malloc() vs new
Following are the differences between malloc() and operator new.:
- Calling Constructors: new calls constructors, while malloc() does not. In fact primitive data types (char, int, float.. etc) can also be initialized with new. For example, below program prints 10.
CPP
#include<iostream> using namespace std; int main() { // Initialization with new() int *n = new int (10); cout << *n; getchar (); return 0; } |
10
2. operator vs function: new is an operator, while malloc() is a function.
3. return type: new returns exact data type, while malloc() returns void *.
4. Failure Condition: On failure, malloc() returns NULL where as new throws bad_alloc exception.
5. Memory: In case of new, memory is allocated from free store where as in malloc() memory allocation is done from heap.
6. Size: Required size of memory is calculated by compiler for new, where as we have to manually calculate size for malloc().
7. Buffer Size: malloc() allows to change the size of buffer using realloc() while new doesn’t
new | malloc() |
---|---|
calls constructor | does not calls constructors |
It is an operator | It is a function |
Returns exact data type | Returns void * |
on failure, Throws bad_alloc exception | On failure, returns NULL |
size is calculated by compiler | size is calculated manually |
Please write comments if you find anything incorrect in the above post, or you want to share more information about the topic discussed above.
Please Login to comment...