C Forever

Mythos mangelnde Speichersicherheit

Der Mythos der mangelnden Speichersicherheit in "C" hält sich ja hartnäckig und wird durch Pressemeldungen z.B. auf heise.de oder golem.de immer wieder aufs Neue unters Volk gebracht, hauptsächlich um Sprachen wie Rust o.ä. zu bewerben.

Ich werde also hier versuchen damit aufzuräumen.

Ist "C" speichersicher ?

Ganz klare Antwort : per se - nein !
Erweiterte Antwort : wenn man es haben will - ja !

Die Sprache "C" enthält keine und die Basis-Bibliothek "libc" eher wenig Ansätze für Speichersicherheit. Dies muss man als Anfänger in der "C"-Programmierung möglichst schnell verinnerlichen. Und als Profi sollte man es sich immer wieder mal ins Gedächtnis rufen. Dieser "Mangel" hilft auf der anderen Seite dabei kompakte und schnelle Programme zu erzeugen (wofür "C" ja mal entwickelt wurde, Stichwort "Betriebssystem").

Grundsätzlich muss sich der geneigte C-Programmierer selbst um die Speichersicherheit in seinem Programm kümmern. Dafür kann er aber auch selbst entscheiden, ob, und wenn ja, wo er etwas dafür unternehmen muss bzw. will.

Da es viele verschiedene Arten von Speicherunsicherheit gibt, sind auch die Möglichkeiten zur Vermeidung vielfältig und vielgestaltig. Genauso vielfältig sind auch die Gründe für oder gegen den Einsatz von Speichersicherheitstechnologien.

Möglichkeiten um die Speichersicherheit zu erhöhen

Grundsätzliche Anmerkungen

Für die Speichersicherheit kann man selbst schon ein paar grundsätzliche Vorkehrungen treffen.

Externe Tools

Als "externe Tools" bezeichne ich hier Programme, mit denen sich der Quellcode auf mögliche Fehler und Überraschungen überprüfen lässt. Je nach verwendetem Programm werden damit syntaktische und semantische Auffälligkeiten gefunden.

Programmerweiterungen

Es gibt drei Möglichkeiten zur Programmerweiterung : Die folgenden Sachen habe ich noch nicht intensiv ausprobiert. Sobald ich mich ausführlich(er) damit beschäftigt habe (ist ja grad gar keine "Dauenrd-am-Strand"-Zeit), werde ich meine Erfahrungen hier einfließen lassen.

Für und Wider des Einsatzes für Speichersicherheit

Auch hier muss man wieder unterscheiden :
- externe Tools
- Programmerweiterungen
Die aufgeführten Erkenntnisse entstammen meiner eigenen Programmiererfahrung und sind sicher nicht vollsrtändig. Aber sie regen vielleicht den einen oder anderen zum Nachdenken an.

Externe Tools

Für den Einsatz externer Tools spricht : Dagegen spricht :

Programmerweiterungen

Für Programmerweiterungen spricht : Dagegen spricht :

Fazit

Speichersicherheit beim Programmieren mit "C" ist kein Hexenwerk. Aber es gibt sie auch nicht umsonst. Sie erfordert Wissen und Aufwand.

Dieses Wissen kann, sollte und eigentlich muss man sich erarbeiten. Z.B. ist eine IDE, die einem "memory leaks" anzeigt, dabei sehr hilfreich. Der GNU Debugger GDB erfüllt diese Aufgagen ebenfalls, wenn auch auf komplett andere Weise, sehr gut.

Dafür erhält man, so man es will und den Aufwand nicht scheut, kompakte und schnelle Programme.

© Uwe Jantzen 28.04.24