Course Curriculum

malloc() vs new

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.

#include<iostream>
using namespace std;
int main()
{
// Initialization with new()
int *n = new int(10);
cout << *n;
getchar();
return 0;
}
Output:
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 On failure, returns NULL
size is calculated by compiler size is calculated manually

“delete this” in C++ (Prev Lesson)
(Next Lesson) delete and free() in C++