/ / ¿Por qué free () no libera RAM en mi Arduino Uno - c ++, memoria, gestión de memoria, arduino

¿Por qué free () no libera RAM en mi Arduino Uno - c ++, memoria, gestión de memoria, arduino

Estoy tratando de liberar RAM eliminando una variabledespués de que se utiliza con la función free (), mi RAM no se está limpiando. ¿Supongo que no hay limpieza de basura? El espacio se limpia después de que salga de la sección de código (ámbito if-statement, while-loop o function), pero no la propia declaración free ().

Estoy haciendo lo siguiente para comprobar la memoria RAM:

int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}

Además, ¿cómo se podría "liberar" esa memoria?

Respuestas

7 para la respuesta № 1

Usted no puede esperar la __brkval para disminuir solo porque llamaste free() en un solo bloque de memoria. El bloque de memoria será marcado libre y disponible para su reutilización, pero en general la __brkval Sólo se moverá en una dirección de acuerdo con la máximo La cantidad de memoria que utiliza su programa en cualquier momento.