为什么free()没有释放我的Arduino Uno上的RAM

Wil*_*ill 4 c++ memory memory-management arduino

我试图通过在使用free()函数后删除变量来释放RAM,但我的RAM没有清理.我想没有垃圾清理工作?在我退出代码段(带范围的if语句,while循环或函数)之后,空格会清空,而不是free()语句本身.

我正在做以下检查RAM:

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

另外,如何"释放"这样的记忆?

Gre*_*ill 7

你不能指望__brkval只是因为你调用free()了一个内存块而减少了.内存块将被标记为空闲并可供重用,但一般情况下,__brkval只会根据内容在一个方向上移动程序在任何时候使用最大内存量.