vvip-68 / LedPanelWiFi

LED панель или гирлянда на WS2812/WS2813, управление ESP8266/ESP32, Web-интерфейс
71 stars 14 forks source link

use .clear() for String instead of assignment operator #33

Closed vortigont closed 10 months ago

vortigont commented 10 months ago

Использовать .clear() нельзя, поскольку он не только обнуляет содержимое строки, но и очищает (освобождает) память

это неверно. String.clear() только обнулят длинну строки в буфере, деаллокации памяти не происходит. Если нужно именно такое поведение, то .clear() использовать предпочтительнее оператора присвоения

https://github.com/espressif/arduino-esp32/blob/51cb927712e512664a0a0f7b1219fdc18e11b857/cores/esp32/WString.h#L94-L96

vvip-68 commented 10 months ago

Ну наверное, все же надо за каждым чихом лезть в исходники и не верить тому, что пишут в форумах... В исходники залезть не догадался, а на форумах было написано - что присваивание пустой строки не освобождает память, используйте clear()

vortigont commented 10 months ago

надо за каждым чихом лезть в исходники и не верить тому, что пишут в форумах

это полезно, да. Еще один камушек в огород ArduinoIDE, там в исходники надо лезть руками. Если преобразовать файлы в нормальные h/cpp и открыть проект в VSCode, то можно легко переходить к определениям/реализации методов и функций библиотек и ядра.