Advantages and disadvantages of static and dynamic memory allocation
Answers
Static allocation:
Advantages:
1. Static allocation is done at compile time when you know the size of the array.
2. The memory size allocated to “data” is static. But it is possible to change content of a static structure without increasing the memory space allocated to it.
3. Global variables are declared “ahead of time,” such as fixed array.
4. Lifetime of Static allocation is the entire runtime of program.
5. It has efficient execution time
Disadvantages:
1. In case more static data space is declared than needed, there is waste of space.
2. In case less static space is declared than needed, then it becomes impossible to expand this fixed size during run time.
Dynamic Allocation:
Advantages:
· Dynamic Allocation is done at run time.
· Data structures can grow and shrink to fit changing data requirements.
· We can allocate (create) additional storage whenever we need them.
· We can de-allocate (free/delete) dynamic space whenever we are done with them.
· Thus we can always have exactly the amount of space required - no more, no less.
Disadvantages:
· As the memory is allocated during runtime, it requires more time.
· Memory needs to be freed by the user when done. This is important as it is more likely to turn into bugs that are difficult to find.
Explanation:
Static
allocation:
Advantages:
1. Static
allocation is done at compile time when you know the size of the array.
2. The
memory size allocated to “data” is static. But it is possible to change content
of a static structure without increasing the memory space allocated to it.
3. Global
variables are declared “ahead of time,” such as fixed array.
4. Lifetime
of Static allocation is the entire runtime of program.
5. It
has efficient execution time
Disadvantages:
1. In
case more static data space is declared than needed, there is waste of space.
2. In
case less static space is declared than needed, then it becomes impossible to
expand this fixed size during run time.
Dynamic Allocation:
Advantages:
·
Dynamic Allocation
is done at run time.
·
Data structures can grow and shrink to fit
changing data requirements.
·
We can
allocate (create) additional storage whenever we need them.
·
We can de-allocate (free/delete) dynamic space
whenever we are done with them.
·
Thus we can always have exactly the amount of
space required - no more, no less.
Disadvantages:
·
As the memory is allocated during runtime, it requires more
time.
·
Memory needs to be freed by the user when done. This is important as it is more likely to
turn into bugs that are difficult to find.