Memory allocation can be described as a process of assigning the physical or the virtual memory address space to a program (its instructions and data). The two basic methods of memory allocation are:
- Static Memory Allocation
- Dynamic Memory Allocation
What Is Static Memory Allocation?
Static memory allocation is the allocation of memory at compile time, before the associated program is executed. In static memory allocation, the size of the data required by the process must be known before the execution of the process initiates. If the data sizes are not known before the execution of the process, then they have to be guessed. If the data size guessed is larger than the required, then it leads to wastage of memory. If the guessed size is smaller, then it leads to inappropriate execution of the process.
In static memory allocation, once the variables are allocated they remain permanent. After the initial allocation, the programmer cannot resize the memory. The memory cannot be increased or decreased.
Static memory allocation method does not require any memory allocation operation during the execution of the process. As all the memory allocation operation required for the process is done before the execution of the process has started. Therefore, it results to faster execution of a process. Static memory allocation is fixed but implementation is simple and easy and it is also fast.
What You Need To Know About Static Memory Allocation
- Memory is allocated before the execution of the program begins (During Compilation).
- Variables remain permanently allocated.
- It uses stack for managing the static allocation of memory.
- In static memory allocation, once the memory is allocated, the memory size cannot change.
- In static memory allocation scheme, execution is faster than dynamic memory allocation.
- It is less efficient than a dynamic allocation scheme.
- Implementation of static memory allocation is simple.
- In this type of allocation memory cannot be resized after the initial allocation.
- Memory cannot be reused when it is no longer needed.
- It is used in an array.
Dynamic Memory Allocation
Dynamic memory allocation refers to managing system memory at runtime. In this process the memory is allocated to the entities of the program when they are to be used for the first time while the program is running. The actual size of the data required is known at the runtime and therefore the process allocates the exact memory space to the program thereby reducing the memory wastage, a factor that improves the performance of the system.
Dynamic memory allocation usually creates an overhead over the system. Some allocation operations are performed repeatedly during the program execution creating more overheads resulting in slow execution of the program.
Dynamic memory allocation provides flexibility during memory allocation, as if the program is large enough then it performs memory allocation operations on different parts of the programs and reduces memory wastage.
What You Need To Know About Dynamic Memory Allocation
- Memory is allocated during the execution of the program.
- Memory can be allocated at any time and can be released at any time.
- It uses heap for managing the dynamic allocation of memory.
- In dynamic memory allocation, when memory is allocated the memory size can be changed.
- In dynamic memory allocation scheme, execution is slower than static memory allocation.
- It is more efficient than a static allocation scheme.
- Implementation of dynamic memory allocation is complex.
- In this type of allocation memory can be dynamically expanded and shrunk as necessary.
- Memory can be freed when it is no longer needed and reused or reallocated during execution.
- It is used in a linked list.
Also Read: Difference Between Static RAM And Dynamic RAM
Difference Between Static And Dynamic Memory Allocation In Tabular Form
BASIS OF COMPARISON | STATIC MEMORY ALLOCATION | DYNAMIC MEMORY ALLOCATION |
Allocation Time | Memory is allocated before the execution of the program begins (During Compilation). | Memory is allocated during the execution of the program. |
Nature Of Allocation | Variables remain permanently allocated. | Memory can be allocated at any time and can be released at any time. |
Memory Area Used In Allocation | It uses stack for managing the static allocation of memory. | It uses heap for managing the dynamic allocation of memory. |
Change Of Memory Size | In static memory allocation, once the memory is allocated, the memory size cannot change. | In dynamic memory allocation, when memory is allocated the memory size can be changed. |
Execution Speed | In static memory allocation scheme, execution is faster than dynamic memory allocation. | In dynamic memory allocation scheme, execution is slower than static memory allocation. |
Efficiency | It is less efficient than a dynamic allocation scheme. | It is more efficient than a static allocation scheme. |
Implementation | Implementation of static memory allocation is simple. | Implementation of dynamic memory allocation is complex. |
Resizing | In this type of allocation memory cannot be resized after the initial allocation. | In this type of allocation memory can be dynamically expanded and shrunk as necessary. |
Memory | Memory cannot be reused when it is no longer needed. | Memory can be freed when it is no longer needed and reused or reallocated during execution. |
Use | It is used in an array. | It is used in a linked list. |
Advantages Of Static Memory Allocation
- Variables are declared ‘’ahead of time’’ such as fixed array.
- It has efficient execution time.
- Variables remain permanently allocated.
- Simplicity of usage.
Disadvantages Of Static Allocation
- There is problem of memory wastage.
- Memory can’t be freed when it is no longer required.
Advantages Of Dynamic Allocation
- Dynamic allocation is done at runtime.
- Data structures can increase or decrease in size according to the requirement.
Disadvantages Of Dynamic Allocation
- 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.
- Because memory is allocated at runtime, it requires more execution time.