Autosave: 2024-04-20 13:20:05

This commit is contained in:
thomasabishop 2024-04-20 13:20:05 +01:00
parent 75aa6785fa
commit d707b71077
3 changed files with 47 additions and 3 deletions

Binary file not shown.

10
zk/Heap_memory.md Normal file
View file

@ -0,0 +1,10 @@
---
id: 18bl
title: Heap_memory
tags: []
created: Saturday, April 20, 2024
---
# Heap_memory
## Related notes

View file

@ -7,8 +7,18 @@ created: Tuesday, April 16, 2024
# Stack memory # Stack memory
Along with heap memory, programs make use of _stack memory_ during the runtime ## Summary
of programs.
- Along with heap memory, programs make use of _stack memory_ during the runtime
of programs.
- Specifically used to keep track of memory used during function executions
within a given scope: control flow, local variables, returned value.
- Uses a LIFO data-structure
- Best suited for small-sized singular values rather than large or complex data
types
## Stack memory ## Stack memory
@ -25,6 +35,30 @@ from the top down.
A **stack pointer** is used to manage the items in the stack. This value is A **stack pointer** is used to manage the items in the stack. This value is
stored in a [[CPU_architecture#registers|register]] and its value is the memory stored in a [[CPU_architecture#registers|register]] and its value is the memory
address of the item currently on the top of the stack. address of the item currently on the top of the stack. Note: _not_ the value
itself, the _address_ of the value.
When a new value is added to the top of the stack, the pointer's value is
adjusted to increase the size of the stack and make room for the new value. So
this will be a new memory address for the latest item. When an item is removed,
the reverse happens. The previously top address is cleared and the pointer
points to the new top item.
### Role in program execution
1. Function call management: a stack records the key information pertaining to
the execution of a function: parameters, local variables, the location of the
address for the returned value.
2. Local variable storage: storing the variables local to a function's scope and
removing them once the function returns, avoiding
[[Memory_leaks|memory leaks]]
3. Control flow: record from where a function is called and where its return
value should be stored, meaning the right value is always returned no matter
how nested it is.
4. Recursion: individuating each call of a function that calls itself and its
given step to avoid infinite loops
## Related notes ## Related notes