- Stack memory is an array of memory, where the data is stored and removed (when no longer in use) in a Last-In-First-Out (LIFO) model.
- Value Types (bool, byte, char, decimal, double, enum, float, int, long, sbyte, short, struct, uint, ulong, ushort) are stored in Stack memory.
- Method calls are generally executed over a Stack and all the variables (of Value Types) are allocated inside the Stack. Once the control goes out of the Method, all the variable memory allocations are removed from the Top in LIFO order.
- The values are stored and accessed directly, and is significantly faster than a Heap.
- Heap memory is an area inside the memory, where the data is stored in the form of chunks of spaces.
- Data can be stored and removed in any order, but the access is significantly slower.
- Reference Types such as Strings, Lists, Collections and Class objects are stored in Heap memory
- The contents of Heap Memory are managed by the Garbage Collector.
What are the differences between a Stack memory and a Heap memory?
- Stack memory is an array of memory, where the data is stored and removed (when no longer in use) in a Last-In-First-Out (LIFO) model.
- Value Types (bool, byte, char, decimal, double, enum, float, int, long, sbyte, short, struct, uint, ulong, ushort) are stored in Stack memory.
- Method calls are generally executed over a Stack and all the variables (of Value Types) are allocated inside the Stack. Once the control goes out of the Method, all the variable memory allocations are removed from the Top in LIFO order.
- The values are stored and accessed directly, and is significantly faster than a Heap.
- Heap memory is an area inside the memory, where the data is stored in the form of chunks of spaces.
- Data can be stored and removed in any order, but the access is significantly slower.
- Reference Types such as Strings, Lists, Collections and Class objects are stored in Heap memory
- The contents of Heap Memory are managed by the Garbage Collector.