4

我试图通过在与 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); 
}

此外,如何“释放”这样的内存?

4

1 回答 1

7

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

于 2012-11-29T00:23:24.140 回答