Their performance varies in both execution time and required memory. The C programming language manages memory statically, automatically, or dynamically. Pointers on c reek pdf lifetime of allocated memory can also cause concern.
Neither static- nor automatic-duration memory is adequate for all situations. Automatic-allocated data cannot persist across multiple function calls, while static data persists for the life of the program whether it is needed or not. In many situations the programmer requires greater flexibility in managing the lifetime of allocated memory. In C, the library function malloc is used to allocate a block of memory on the heap.
The program accesses this block of memory via a pointer that malloc returns. When the memory is no longer needed, the pointer is passed to free which deallocates the memory so that it can be used for other purposes.
This memory is automatically freed when the calling function ends. The C dynamic memory allocation functions are defined in stdlib. However, the size of the array is fixed at compile time. The memory set aside by malloc is not initialized and may contain cruft: the remnants of previously used and discarded data.
After allocation with malloc, elements of the array are uninitialized variables. 10 integers, and sets to zero all the bytes within that memory space. With realloc we can resize the amount of memory a pointer points to. The lack of a specific pointer type returned from malloc is type-unsafe behaviour according to some programmers: malloc allocates based on byte count but not on type.
There are advantages and disadvantages to performing such a cast. Under the C standard, the cast is redundant.
Adding the cast may mask failure to include the header stdlib. In the absence of a prototype for malloc, the C90 standard requires that the C compiler assume malloc returns an int. 32-bit value whereas the actually defined function returns a 64-bit value.