Introduction

Stack

A stack is a type of memory area in a computer that stores temporary variables created by a function. Variables are declared, stored, and initialized on the stack during runtime.

It is a type of temporary memory. When the computing task is finished, the variable's memory is automatically erased. Methods, local variables, and reference variables are mostly found in the stack section.

Heap

Local stack memory is replaced by "heap" memory, also known as "dynamic" memory. Local memory is completely automatic. Local variables are automatically allocated when a function is called and deallocated when the function exits.

Tabular Differentiation

Parameter

Stack

Heap

Type 

Linear data structure.

Hierarchical data structure.

Access Speed

High

Slower

Space management

Efficient management and no fragmentation of memory.

Memory fragmentation can occur when memory blocks are allocated and then freed.

Access

Only local variables 

It gives you global access to variables.

Limit of space size

The size is limited and it is dependent on the operating system

No specific limit

Resize

No chance

Variables can be resized.

Memory Allocation

Contiguous allocation of memory

Random allocation

Allocation and Deallocation

Compiler instructions do this automatically.

Manual

Deallocation

It is not necessary to de-allocate variables.

De-allocation must be done explicitly.

Cost

Less

More

Implementation

In three ways: as an array, in dynamic memory, or as a linked list.

Using array & trees.

Main Issue

Memory Shortage  

Fragmentation of Memory

Locality of reference

Automatic compile time instructions.

Adequate

Flexibility

Size is Fixed

Resizing is option

Access time

Fast

Slow

Examples of Stack and Heap

Advantages and Disadvantages

Advantages of Stack

  • Allows you to manage data in a Last In First Out (LIFO) manner, which Linked list and array cannot.
  • When a function is called, its local variables are stored in a stack, which is automatically destroyed when the function returns.
  • When a variable is not used outside of that function, a stack is used.
  • It gives you control over how memory is allocated and released.
  • The object is automatically cleaned up by Stack.
  • Variables cannot be resized because they are not easily corrupted.

Disadvantages of Stack

The following are the disadvantages of using Stack memory:

  • Stack memory is extremely limited.
  • Putting too many objects on the stack raises the possibility of stack overflow.
  • It is not possible to gain access at random.
  • Variable storage will be overwritten, resulting in unpredictable behavior of the function or program.
  • The stack will exit the memory area, which may result in an abnormal termination.

Advantages of Heap

  • Heap assists you in determining the greatest and smallest number.
  • Garbage collection is a process that runs on heap memory to free up the memory used by the object.
  • The heap method is also employed in the Priority Queue.
  • It gives you global access to variables.
  • Heap has no memory size restrictions.

Disadvantages of Heap

  • It can provide the maximum amount of memory that an operating system can provide.
  • It takes longer to compute.
  • Because heap memory is used globally, memory management is more complicated.
  • It takes too long to execute when compared to the stack.