检查 Arduino 中的内存占用

MrG*_*ass 6 memory-management arduino

我正在用我的 Arduino 做一个简单的项目。最近我不得不将我的一个变量转换为 long 而不是 int,为了保持简单,我只是移动了它与之交互的所有数字(所以我不必担心跨类型比较和数学)。这看起来很浪费,但这只是我自己的一个时钟,我不太在意。

然而,它让我想知道我使用了多少内存。我怀疑这是一个问题,但我意识到我不知道任何检查方法。

那么,有没有办法检查 Arduino 使用的内存量?

理想情况下,我想打印出通过串行连接可用的当前内存/总量。

Esb*_*ben 3

你可以用这个。它会让您了解您所在的位置:

Serial.print(availableMemory());

// free RAM check for debugging. SRAM for ATmega328p = 2048Kb.
int availableMemory() {
    // Use 1024 with ATmega168
    int size = 2048;
    byte *buf;
    while ((buf = (byte *) malloc(--size)) == NULL);
        free(buf);
    return size;
}
Run Code Online (Sandbox Code Playgroud)

  • 这仅测量堆使用情况(忽略堆栈和全局变量),如果堆碰巧碎片化,则会失败。 (3认同)