z.B.
try {
dokument.speichern();
datenbank.commit();
status_anzeigen("Daten gespeichert");
}
catch() {
datenbank.rollback();
meldung("speichern fehlgeschlagen");
}
Also, versuche zu speichern:
- wenn's klappt, alles festschreiben
- wenn nicht, alles rückgängig machen und den User informieren
Buffer-Overflows sollten in Script/Runtime/VM-Sprachen auch nicht vorkommen.
( z.B. TypeScript/JavaScript, Java, C#, ... )
Diese benutzen jedoch Bibliotheken, die's ev. mit dem Speicher nicht so genau nehmen.
Oder man benutzt unsafe-Blöcke oder unglückliche Compilerschalter.
( Undefiniertes Verhaltung (UB) glänzt am besten durch Abwesenheit )
C++ ohne UB geht auch -- z.B. mit C++/CLI
jedoch nicht ISO C++ konform.
( Alles mit ^ ist hier auch verwalteter Speicher )
public ref class IntDotnetClass
{
public: int IntValue;
public: IntDotnetClass()
{
this->IntValue = 0;
}
public: virtual ~IntDotnetClass()
{
System::Console::WriteLine("~destruct IntDotnetClass" + IntValue.ToString());
}
public: int operator=( const int IntValue)
{
this->IntValue = IntValue;
return this->IntValue;
}
public: virtual System::String^ ToString() override
{
return IntValue.ToString();
}
};
Weiters stehen zur Vermeidung von Speicherproblemen
- Rust
- Fil-C
- Valgrind
- und ev. bald TrapC
zur Verfügung.
- 1 - (TxtDoc-runtime-sprachen2026-06-02.html)