ArduinoJSON:記憶體分配
您可以使用 **ArduinoJson** 庫宣告兩種型別的 JSON 文件 - **StaticJsonDocument** 和 **DynamicJsonDocument**。兩者都需要在宣告時指定容量(以位元組為單位)。
對於靜態文件,宣告 **語法** 為:
StaticJsonDocument<capacity> doc_name;
例如:
StaticJsonDocument<256> myDoc;
對於動態文件,宣告 **語法** 為:
DynamicJsonDocument doc_name(capacity);
例如:
DynamicJsonDocument myDoc(4096);
兩者之間的區別在於靜態文件在棧上分配記憶體。因此,它不需要呼叫 **malloc()** 和 **free()**,因此速度更快。
動態文件在堆上分配記憶體,因此速度稍慢,應用於較大的 JSON,這些 JSON 不適合棧記憶體。
經驗法則是對於小於 1 KB 的 JSON 使用靜態文件,對於大於 1 KB 的 JSON 使用動態文件。
您可以在這裡閱讀更多關於 **StaticJsonDocument** 的資訊 這裡。
以及更多關於 **DynamicJsonDocument** 的資訊 這裡。
您還可以閱讀有關如何確定 JsonDocument 容量的資訊 這裡。
廣告