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 容量的資訊 這裡

更新於: 2021年7月26日

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告