Arduino MEGA2560 Speicherüberlauf? Mit 18% Sketch und 30% Memory??

Diesen Effekt "Wenig RAM-Verbrauch + wenig Flash-Verbrauch = dennoch seltsame Zeichen" hatte ich in meinem kürzlich vorgestellten Projekt SudokuSolver UNO ebenfalls. Viel Lesen und einiges Experimentieren brachten mir die Erkenntnis, dass die eingesetzte String-Class bei Aufruf einzelner (augenscheinlich notwendiger) Strings dennoch Dinge ins RAM schreibt, die man nicht kontrollieren kann. Das bestätigen auch diverse Aussagen vieler echter Experten hier im Forum.

Nach vielen teilweise recht frustrierender Versuche habe ich mir dann tatsächlich die Mühe gemacht, jeden - aber auch wirklich JEDEN "String" in ein Char*-Array umzuwandeln und NUR NOCH mit den vielen C++ - Funktionen zu behanden. Für einige wenige mir aus PHP bekannten Funktionen habe ich Ersetzungen in C++ nachgebaut - so dass ich auf dann Biegen und Brechen absolut NULL "String"-Object nutzen musste. Es war mühsam und anstrengend. Zugegeben. Aber der Effekt davon war, dass diese o.g. "Seltsamen Zeichen" im Display nun vollkommen verschwunden waren und das Progamm absolut stabil läuft. Sogar mit Rekursionen. Und genau in diesem Zusammenhang habe ich auch die hier im "Playground" vorgestellte Auslesung des freien RAMs einsetzen können und hatte somit den Überblick über nahezu jedes Byte im 328p.

Ich kann echt nur dringends empfehlen, für weitere "Freude" bei der Arbeit mit dem Arduino auf jegliche Verwendung der String-Class zu verzichten. Auch wenn es evtl. mühsam sein sollte - der spätere Erfolg belohnt einen hinterher um so mehr.