如果我在全局范围内声明一个数组,它会占用内存来存储它。但是,如果我在一个函数(例如setup()
)中声明一个数组(我使用两个类型,一个是char数组,而另一个是一个int数组),一旦数组进入,将自动释放内存超出范围?
我相信这会发生在某些变量上,例如int或byte。我只是想知道这是否也适用于数组。
另外,因为我读到包含大量字符串的程序,所以最好将它们存储在程序空间中,进行调用,例如
lcd.print("Hello")
在函数结束后仍然用尽“Hello”字符串的内存(假设print函数没有在其他地方存储它)?
答案 0 :(得分:2)
答案 1 :(得分:1)
关于你的第一个问题: 是。在函数内声明的所有变量仅在函数内部有效,然后自动释放。这有一些含义:
在变量超出范围后,您必须不使用指向本地声明的变量的指针,例如,在函数返回后。 (不要从你的函数返回一个指向本地数组的指针!) - 然而,当从 中声明它时,将该指针传递给其他函数是完全合法的。块/功能。
本地变量存储在本地堆栈中,因此在调用函数时,需要有足够的空间让堆栈增加相应的字节数。