---
tag: m0100
title: Free Memory
brief: Observe memory used by code
author: thinkyhead

group: debug
requires: M100_FREE_MEMORY_WATCHER

codes: [ M100 ]

parameters:

- tag: D
  optional: true
  description: Dump the free memory block from `__brkval` to the stack pointer

- tag: F
  optional: true
  description: Return the number of free bytes in the memory pool along with other vital statistics that define the memory pool

- tag: I
  optional: true
  description: Initialize the free memory pool so it can be watched and print vital statistics that define the free memory pool

- tag: C
  optional: true
  description: Corrupt 'n' locations in the free memory pool and report the locations of the corruption. This is useful to check the correctness of the `M100 D` and `M100 F` commands
  values:
  - tag: n
    type: int

---

Use `M100` for development purposes to observe how much memory (particularly stack) is being used by code. Proper AVR code should avoid use of `new`, `malloc`, etc., and instead use either pre-allocated static variables or stack.
