簡體   English   中英

Arduino陣列內存使用情況

[英]Arduino array memory usage

如果我在全局范圍內聲明一個數組,它將用盡內存來存儲它。 但是,如果我在函數(例如setup() )中聲明一個數組(我使用兩種類型,一種是char數組,另一種是int數組),則一旦該數組退出數組,該內存就會自動釋放范圍?

我相信這對於某些變量(例如int或byte)會發生。 我只是想知道這是否也適用於數組。

另外,由於我閱讀了包含大量字符串的程序,因此最好將它們存儲在程序空間中,因此請執行諸如

lcd.print("Hello")

函數結束后是否仍然用完“ Hello”字符串的內存(假設打印函數未將其存儲在其他地方)?

對於第二個問題:

F()宏會將字符串存儲在progmen中,而不是使用RAM ,因此您不再遇到此問題:

lcd.print(F("Hello"));

關於您的第一個問題:是的。 在函數內部聲明的所有變量僅在函數內部有效,直到函數返回並隨后自動釋放。 這具有一些含義:

  1. 在變量超出范圍后,例如,在函數返回之后, 不得使用指向本地聲明的變量的指針。 不要返回一個指針從函數的局部陣!) -然而perfecly法律從聲明塊/函數調用它們時該指針傳遞給其他的功能。

  2. 局部變量存儲在本地堆棧上,因此在調用該函數時,需要留有足夠的空間,以便堆棧可以增加相應的字節數。

  3. 這些變量使用的內存量 在編譯時計算“已用” RAM 時考慮

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM