Dynamically allocating memory on the stack A less well known, fifth possibility is to dynamically allocate memory on the stack. Yes, that's possible and sometimes a very convenient way to optimize heap allocations. Especially, for small dynamic arrays like look-up tables.
C language provides the alloca function to allocate arbitrary size array on the stack. After the function returns or the scope ends, the stack memory is automatically reclaimed back (popped back) without the developer having to deallocate it explicitly and thereafter is unsafe to access it again from another function.
Implementing stack using Dynamic Array to overcome the exception of Overflow when the array gets full. 1) When the array gets full, we dynamically take a new array of bigger size and copy the previous elements to new array and push the new element. 2) First approach is to increase the size of new array by +1.
dynamically allocated arrays To dynamically allocate space, use calls to malloc passing in the total number of bytes to allocate (always use the sizeof to get the size of a specific type). A single call to malloc allocates a contiguous chunk of heap space of the passed size.
I just did a experiment yesterday, and find something confusing:
#include <stdio.h>
int main()
{
int j;
scanf("%d",&j);
const int i = j;
int arr[i];
return 0;
}
The number j
is read from keyboard and it’s used to allocate the array arr
on the stack.
The compiler does not even know the size of the array at compile time (initializes j to 0?), but there is no compilation error. How is it possible?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With