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
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.
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. 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.