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

时间:2012-11-29 00:20:09

标签: 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); 
}

此外,如何“释放”这样的记忆?

1 个答案:

答案 0 :(得分:7)

由于您在单个内存块上调用了__brkval,因此不能指望free()减少。内存块将标记为,并且可以重复使用,但通常__brkval只会根据最大内存量向一个方向移动你的程序在任何时候使用。