C++ Arduino阵列内存使用率
如果我在全局范围内声明一个数组,它将使用内存来存储它。但是,如果我在函数(例如C++ Arduino阵列内存使用率,c++,arrays,string,arduino,C++,Arrays,String,Arduino,如果我在全局范围内声明一个数组,它将使用内存来存储它。但是,如果我在函数(例如setup())中声明一个数组(我使用两种类型,一种是char数组,另一种是int数组),那么一旦数组超出范围,内存是否会自动释放 我相信这会发生在一些变量上,比如int或byte。我只是想知道这是否也适用于数组 另外,因为我读到过,对于包含大量字符串的程序,最好将它们存储在程序空间中 lcd.print("Hello") 函数结束后,仍然会使用“Hello”字符串的内存(假设打印函数没有将其存储在其他地方)?到第二
setup()
)中声明一个数组(我使用两种类型,一种是char数组,另一种是int数组),那么一旦数组超出范围,内存是否会自动释放
我相信这会发生在一些变量上,比如int或byte。我只是想知道这是否也适用于数组
另外,因为我读到过,对于包含大量字符串的程序,最好将它们存储在程序空间中
lcd.print("Hello")
函数结束后,仍然会使用“Hello”字符串的内存(假设打印函数没有将其存储在其他地方)?到第二个问题:
F()
宏将在程序中存储字符串,而不是使用,因此您不再有此问题:
lcd.print(F("Hello"));
关于第二个问题:
F()
宏将在程序中存储字符串,而不是使用,因此您不再有此问题:
lcd.print(F("Hello"));
关于你的第一个问题:
对函数中声明的所有变量仅在函数返回并自动释放之前在函数中有效。这有一些影响:
既然它是一个宏,我只需要添加F()就可以了?有几个后缀为_P的函数用于处理程序内存。如果你使用Arduino IDE,我认为这应该适用于你正在使用的任何字符串。试一试。既然它是一个宏,我可以添加F()就行了?有几个后缀为_P的函数用于处理程序内存。如果你使用Arduino IDE,我认为这应该适用于你正在使用的任何字符串。试一试。谢谢你提供了一个非常详细和翔实的答案。它比我想象的更详细地回答了我的问题。谢谢你提供了一个非常详细和信息丰富的答案。它比我想象的更详细地回答了我的问题。