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



我试图通过在与free()函数一起使用后删除变量来释放RAM,但我的RAM没有清理。 我想没有进行垃圾清理? 在我退出代码部分(作用域的 if 语句、while-loop 或函数)后,空间会清理干净,但 free() 语句本身不会清理。

我正在执行以下操作来检查RAM:

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

此外,如何"释放"这种记忆?

您不能仅仅因为您在单个内存块上调用free()而期望__brkval降低。内存块将被标记为可用并可供重用,但通常,__brkval只会根据程序在任何时候使用的最大内存量向一个方向移动。

最新更新