Es "complicado"....
Debido a que:
- Tenes algunas cosas en la RAM que ocupan un espacio fijo, como el heap, como algunas variables ya inicializadas.
- Y luego tenes todo lo que es el stack, que la única forma de verlo es observando el puntero del top del stack. También tenes definido en el linker la base del stack, de donde se va a ir llenando. por lo tanto de allí podes calcular en cada momento la cantidad de memoria usada por el stack.
También en el Heap, luego tenes que determinar si esa memoria esta libre o usada. Y tal ves clasificarla de otra forma. No lo veo muy simple jejej.
Tal ves exista alguna librería para eso... espero.