我遇到了一個問題我並不真正瞭解如何使用ESP8266 core for Arduino在ESP8266上開發軟件。基本上我的程序崩潰,如果我通過在調用函數時創建的String
。我有一個String
作爲參數的函數:使用字符串參數直接調用變量與變量
void SimpleFunc(String str)
{
...
}
我嘗試了調用此函數一個很長的String
的兩種方式。 第一種方式是創建一個新的變量String
,並將它傳遞:
String veryLongString = "veeeerryyyy loooong ........."; //Much longer in reality!!!
SimpleFunc(veryLongString);
方式二是將String
直接傳遞:
SimpleFunc("veeeerryyyy loooong .........");
運行在發生碰撞的第二特徵的結果。下面是疊層的一部分:在... \ esp8266 \ 2.3.0 \芯\ esp8266 \ umm_malloc/umm_malloc.c線1163
字符串::〜字符串()在
umm_assimilate_up。 .. \ esp8266 \ 2.3.0 \核心\ esp8266/WString.cpp線720
_umm_free在... \ esp8266 \ 2.3.0 \核心\ esp8266 \ umm_malloc/umm_malloc.c線1287
免費at ... \ esp8266 \ 2.3.0 \ cores \ esp8266 \ umm_malloc/umm_malloc.c line 1733
字符串::〜字符串()在... \ esp8266 \ 2.3.0 \ cores \ esp8266/WString.cpp行720
這裏調用函數的區別在哪裏?爲什麼第一種方法運作良好,第二種方法不行?
https://hackingmajenkoblog.wordpress.com/2016/02/04/the-evils-of-arduino-strings/ –