Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

what is difference between MALLOC & NEW, FREE & DELE

Status
Not open for further replies.

sacrpio

Member level 3
Joined
May 24, 2004
Messages
56
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Activity points
500
hello,
Please tell me what are the differences between malloc & new, delete & free

bye..
 

Frikkie

Junior Member level 1
Joined
Oct 28, 2004
Messages
19
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
187
Re: what is difference between MALLOC & NEW, FREE &

Malloc => Use a current variable and asign a diffrent size memory allocation for it.
New => Create a completely new memory allocation for that varible.
Delete => Delete the current memory allocation and variable index. (This destroys the variable completly. Can't use it ever again.)
Free => Free the memory assigned to the variable but leave the variable index.

Malloc and Free work together and New and Delete works together.

:sm35:
 

Antharax

Full Member level 4
Joined
Dec 31, 1999
Messages
208
Helped
14
Reputation
28
Reaction score
1
Trophy points
1,298
Activity points
2,865
Re: what is difference between MALLOC & NEW, FREE &

That ain't correct!

malloc does memory allocation and returns a pointer to the allocated memory.
malloc searches the available free memory pool for a place which can hold the requested number of bytes, allocates it (remove it from the free part of the memory and keep some kind of index). (so Frikki's explanation is wrong!!!)

free frees the memory at the specified adres. It is possible that the pointer still points to the memory and that the correct data is still in that place!

Code:
int * intArray;
// Allocate 10 int variables in a continuous memory section
intArray = malloc(10*sizeof(int)); 

// Free the memory section again (so you don't have memory leaks)
free(intArray);

These are allocation and deallocation the memory, not much intelligence behind it.
In uC you can write it yourself, in an operating system they are probably provided by the memorymanger of the OS.

malloc and free can be used in C and in C++ (although I would try to avoid it as much as possible in C++)

new and delete are C++ keywords and cannot be used in C.
new is similar to the malloc but it does more. You could see new as a wrapper function around malloc. It allocates the memory needed for the object and calls the appropriate constructor (so the object is initialized as needed)

delete is similar to free but it does more! The destructor is called so you can clean up everything.

Antharax
 

greek

Member level 3
Joined
Nov 10, 2004
Messages
61
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Activity points
381
If you program in C++ new and delete. If C then malloc and free (at least)
 

btbass

Advanced Member level 5
Joined
Jul 20, 2001
Messages
1,897
Helped
438
Reputation
880
Reaction score
287
Trophy points
1,363
Location
Oberon
Activity points
12,863
If you write and compile a small program in C++ using the microsoft or borland compilers, which declares a simple array, (int *I = new int[20];) and then decompile it and look at the listings, with slight variations between compilers, you will find that new calls malloc to allocate the memory from the heap, and delete calls free to release the memory. (and why not, they are time tested, solid routines?)
What new and delete do, is GARANTEE, to return or destroy, a pointer of the correct type. As C++ tries to be a strongly typed language.
In C, you have to typecast, with sizeof, the returned pointer type when using malloc, as malloc returns a void pointer.
 

Antharax

Full Member level 4
Joined
Dec 31, 1999
Messages
208
Helped
14
Reputation
28
Reaction score
1
Trophy points
1,298
Activity points
2,865
Re: what is difference between MALLOC & NEW, FREE &

Yes, that means new is equivalent to malloc with some extra's (initialization of members, overloading, ...) ;-)
The book "Object Oriented Programming With ANSI C" is interesting to read here. (https://www.planetpdf.com/codecuts/pdfs/ooc.pdf)

But it doesn't mean C++ is translated to that C code before it is compiled ;-).
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top