Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   why free() used in malloc? (http://www.go4expert.com/forums/free-malloc-t799/)

Tango Issac Debian 10May2006 10:14

why free() used in malloc?
 
Hallo

Experts,

see the two declarations .....

i) int i;
ii)p=(int*)malloc(size of(int));


Both of this functions used here to allocate the memory .But in case of the malloc ,we use then the free(p),But not for the case of int i,,,,,,,,,,,,,,,,,,,,,,,,

Why? Please REPLY....................See u again...........

from
TANGO

coderzone 10May2006 11:31

Re: why free() used in malloc?
 
Through malloc you achieve dynamic memory allocation and dynamically allocated object remains allocated until it is deallocated explicitly, either by the programmer or by a garbage collector.

Static memory allocation refers to the process of allocating memory at compile-time before the associated program is executed.

So to summarize if you allocate the memory you need to be freeing it up or if compiler allocates it for you, you dont need to be freeing it up.

Aztec 10May2006 15:47

Re: why free() used in malloc?
 
Quote:

Originally Posted by Tango Issac Debian
see the two declarations .....

i) int i;
ii)p=(int*)malloc(size of(int));


Both of this functions used here to allocate the memory .

First of all

Code:

int i;
is not a function its a defination(as well as decleration).Whenever compiler comes across such statement, it automatically allocates memory(amount varies from compiler to compiler) on stack at compile time. There is no function in standard "C" to explicitly delete the statically allocated memory. This memory will automatically be deleted by compiler as the scope of the variable ends. You do not need to worry about it.

Quote:

Originally Posted by Tango Issac Debian
But in case of the malloc ,we use then the free(p),But not for the case of int i,,,,,,,,,,,,,,,,,,,,,,,,

Any memory allocation done by malloc or calloc is done on heap. It becomes the responsibilty of the programmer to make sure that memory should be released after use.

Don't even think of using free on statically allocated memory. It will most probably be leading to crashing of program.


All times are GMT +5.5. The time now is 09:53.