top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

What is the difference between new/delete and malloc/free?

+1 vote
591 views
What is the difference between new/delete and malloc/free?
posted Dec 19, 2014 by Emran

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

2 Answers

+1 vote
 
Best answer

NEW/DELETE: Allocate/release memory
1)Memory allocated from 'Free Store'
2)Returns a fully typed pointer.
3)new (standard version) never returns a NULL (will throw on failure)
4)Are called with Type-ID (compiler calculates the size)
5)Has a version explicitly to handle arrays.
6)Reallocating (to get more space) not handled intuitively (because of copy constructor).
7)Whether they call malloc/free is implementation defined.
8)Can add a new memory allocator to deal with low memory (set_new_handler)
9)operator new/delete can be overridden legally
10)constructor/destructor used to initialize/destroy the object

Malloc/Free: Allocates/release memory
1)Memory allocated from 'Heap'
2)Returns a void*
3)Returns NULL on failure
4)Must specify the size required in bytes.
5)Allocating array requires manual calculation of space.
6)Reallocating larger chunk of memory simple (No copy constructor to worry about)
7)They will NOT call new/delete
8)No way to splice user code into the allocation sequence to help with low memory.
9)malloc/free can NOT be overridden legally

Technically memory allocated by new comes from the 'Free Store' while memory allocated by malloc comes from the 'Heap'. Whether these two areas are the same is an implementation details, which is another reason that malloc and new can not be mixed

answer Dec 20, 2014 by Chirag Gangdev
0 votes

new/delete

Allocate/release memory
Memory allocated from ‘Free Store’
Returns a fully typed pointer.
new (standard version) never returns a NULL (will throw on failure)
Are called with Type-ID (compiler calculates the size)
Has a version explicitly to handle arrays.
Reallocating (to get more space) not handled intuitively (because of copy constructor).
If they call malloc/free is implementation defined.
Can add a new memory allocator to deal with low memory (set_new_handler)
operator new/delete can be overridden legally
constructor/destructor used to initialize/destroy the object
malloc/free

Allocates/release memory
Memory allocated from ‘Heap’
Returns a void*
Returns NULL on failure
Must specify the size required in bytes.
Allocating array requires manual calculation of space.
Reallocating larger chunk of memory simple (No copy constructor to worry about)
They will NOT call new/delete
No way to splice user code into the allocation sequence to help with low memory.
malloc/free can NOT be overridden legally

answer Mar 9, 2016 by Ashish Kumar Khanna
It is just duplicate of 1st answer
...