iX 2/2017
S. 94
Wissen
Embedded-Programmierung
Aufmacherbild

Ressourcen schonen mit C++-Funktionen

Schonzeit

Embedded-Programme sollten nicht nur eine lange Lebenszeit haben, sondern auch besonders sorgfältig mit ihren Ressourcen umgehen. Daher ist es in diesem Umfeld meist wenig sinnvoll, dass Entwickler das Speichermanagement mit new und delete selbst in die Hand nehmen. Sinnvolle Alternativen bieten neue Pointer und Container.

Zwei vorangegangene Artikel zur Embedded-Programmierung mit C++ ([1], [2]) haben bereits Strategien und Funktionen vorgestellt, die sicherheitskritischen Anforderungen genügen, sowie solche, die Anwendungen bereits beim Kompilieren optimieren. Die Embedded-Programmierung zeichnet sich durch ihren sorgfältigen Umgang mit Ressourcen aus. Die bereits im letzten Artikel vorgestellte Move-Semantik ist aber bei Weitem nicht alles, was C++ hierfür zu bieten hat. placement new für das exakte Speichermanagement der Applikation und insbesondere der neue Container std::array gehören in den Werkzeugkasten jedes professionellen C++-Entwicklers.

Explizites Speichermanagement in C++ ist komplex, aber auch mindestens ebenso leistungsfähig. Leider ist diese spezielle Domäne von C++ weitgehend unbekannt. Entwickler können mit ihr Objekte direkt in einem statischen Speicher, einem reservierten Bereich oder einem Speicherpool erzeugen. Funktionen, die für sicherheitskritische Applikationen insbesondere in der Embedded-Welt einen entscheidenden Mehrwert liefern. Doch vor der Kür steht die Pflicht. Zur Speicherzuweisung kommen die Operatoren new beziehungsweise new[] [a], zur Speicherfreigabe die Operatoren delete beziehungsweise delete[] [b] zum Einsatz. (Zu Quellen im Web siehe „Alle Links“ am Ende des Artikels.) Durch einen kleinen Wrapper um die globalen Operatoren new und delete lässt sich das Speicherverhalten offenlegen.