mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-14 17:13:50 +01:00
doc/static-vs-dynamic-memory: style and spelling fixes + updates
To current status quo.
This commit is contained in:
parent
314b3374c6
commit
f762232a12
@ -1,29 +1,29 @@
|
||||
This page discusses the usage of memory on restricted devices
|
||||
=============================================================
|
||||
Static vs. Dynamic Memory
|
||||
=========================
|
||||
|
||||
In your c program you have to decide where the memory you want to use comes from.
|
||||
There are two ways to get memory in your c code:
|
||||
In your C program you have to decide where the memory you want to use comes from.
|
||||
There are two ways to get memory in your C code:
|
||||
|
||||
1. define static memory
|
||||
2. use dynamic memory (call malloc/free to get memory from the heap)
|
||||
1. Define static memory.
|
||||
2. Use dynamic memory (call `malloc()`/`free()` to get memory from the heap).
|
||||
|
||||
Both ways have some drawbacks which are listed here.
|
||||
If you want to analyze the static memory consumption of your code you can use [otm](https://github.com/LudwigOrtmann/otm).
|
||||
If you want to analyze the static memory consumption of your code you can use [otm](https://github.com/LudwigOrtmann/otm) or `make cosy`.
|
||||
|
||||
static memory
|
||||
Static memory
|
||||
-------------
|
||||
* access the memory in one operation O(1) -> real time condition
|
||||
* programmer needs to know the amount of memory on compile time
|
||||
* leads to over and undersized buffers
|
||||
* forces the programmer to think about the amount of need memory at compile time
|
||||
* Access the memory in one operation O(1) ⇒ real time condition
|
||||
* Programmer needs to know the amount of memory on compile time
|
||||
* Leads to over and undersized buffers
|
||||
* Forces the programmer to think about the amount of need memory at compile time
|
||||
|
||||
dynamic memory
|
||||
Dynamic memory
|
||||
--------------
|
||||
* malloc and free are implemented in your libc (RIOT on ARM: newlib)
|
||||
* run time behavior not predictable
|
||||
* code can request the amount of memory it needs on run time
|
||||
* on most platforms: the size of the heap is sizeof(RAM)-sizeof(static memory)
|
||||
* if you reduce your usage of static memory your heap gets bigger
|
||||
* on some platforms calling `free()` will not or not always make heap memory available again (see onetime_malloc() on MSP430 or the implementation of sbrk() for lpc2387)
|
||||
* programmer needs to handle failed memory allocation calls at runtime
|
||||
* static code analysis is unable to find errors regarding memory management
|
||||
* `malloc()` and `free()` are implemented in your `libc` (RIOT on ARM: `newlib`/`picolib`)
|
||||
* Runtime behavior is not predictable
|
||||
* Code can request the amount of memory it needs on runtime
|
||||
* On most platforms: the size of the heap is `sizeof(<RAM>)-sizeof(<static memory>)`
|
||||
* If you reduce your usage of static memory your heap gets bigger
|
||||
* On some platforms calling `free()` will not or not always make heap memory available again (see @ref oneway_malloc on MSP430)
|
||||
* Programmer needs to handle failed memory allocation calls at runtime
|
||||
* Static code analysis is unable to find errors regarding memory management
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user