Überschreiben (Programmierung)

Überschreiben (Programmierung)

In der Informatik wird unter Überschreibung (engl. clobbering) das Überschreiben einer Datei oder die Speicherüberschreibung verstanden, das normalerweise unbeabsichtigt ist. Man verwendet selten auch das Wort Überschreiber, wenn eine Quelltextstelle unbeabsichtigt Speicher verdirbt.

Das Überschreiben passiert oft unbeabsichtigt, z. B. durch den Aufruf der Ausgabeumleitungsoperator (>). Um dies zu vermeiden werden verschiedene Mittel angewendet, wie z. B. den Shell-Parameter set -o noclobber zu setzen (bash, ksh) oder set noclobber (csh, tcsh). Dies verhindert, dass > überschreibt, indem eine Fehlermeldung erscheint:[1]

$ echo "Hello, world" >file.txt
$ echo "This will overwrite the first greeting." >file.txt
$ set -o noclobber
$ echo "Can we overwrite it again?" >file.txt
-bash: file.txt: cannot overwrite existing file
$ echo "But we can use the >| operator ignore the noclobber." >|file.txt
$ # Successfully overwrote the contents of file.txt using the >| operator
$ set +o noclobber # Changes setting back

In höheren Programmiersprachen, wie z. B. C, wird konzeptbedingt meist nicht auf das Überschreiben einer Speicherstelle hingewiesen. Um das Überschreiben einer Speicherstelle zu verhindern, sind meist Schlüsselwörter für den Compiler vorhanden. In der Programmiersprache C ist für dieses Vorhaben das Schlüsselwort const vorgesehen, jedoch darf es nicht mit der Präprozessordirektive #define verwechselt werden. Stellt der Compiler bei der semantischen Analyse fest, das eine Variable trotz Vereinbarung überschrieben werden soll, wird meist ein Fehler geliefert und der Übersetzungsvorgang abgebrochen.

In folgendem Beispielcode wird die Variable a mit dem Schlüsselwort const als konstante deklariert. Bei einem anschließendem Übersetzungsversuch mit dem gcc-Compiler wird eine Fehlermeldung ausgegeben.

int main(void)
{
    const int a = 3;
    a = 4;
    return 0;
}
test.c: In function ‘main’:
test.c:7:2: error: assignment of read-only variable ‘a’

Einzelnachweise

  1. "Unix Power Tools", by Shelley Powers, Jerry Peek, Tim O'Reilly, Mike Loukides, p. 892

Siehe auch


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Überschreiben — hat in der Informatik folgende Bedeutungen Überschreiben (Programmierung), meist unbeabsichtigt Dateien oder Speicher überschreiben Überschreiben (OOP), die meist beabsichtigte Überschreibung einer Methode in der objektorientierten Programmierung …   Deutsch Wikipedia

  • Überschreiben (objektorientierte Programmierung) — Der Begriff Überschreiben (engl. override, wörtlich außer Kraft setzen, überwinden) beschreibt eine Technik in der objektorientierten Programmierung, die es einer Unterklasse erlaubt, eine eigene Implementierung einer von der Oberklasse geerbten… …   Deutsch Wikipedia

  • Überschreiben (OOP) — Der Begriff Überschreiben (engl. override, wörtlich außer Kraft setzen, überwinden) beschreibt eine Technik in der objektorientierten Programmierung, die es einer abgeleiteten Klasse erlaubt, eine eigene Implementierung einer von der Basisklasse… …   Deutsch Wikipedia

  • Vererbung (objektorientierte Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Vererbung (Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Klasse (objektorientierte Programmierung) — Klasse ist in der Objektorientierung ein abstrakter Oberbegriff für die Beschreibung der gemeinsamen Struktur und des gemeinsamen Verhaltens von realen Objekten (Klassifizierung) im Softwaredesign: reale Objekte werden auf die für die Software… …   Deutsch Wikipedia

  • Signatur (Programmierung) — Eine Signatur (oder Methodensignatur) definiert in der Programmierung die formale Schnittstelle einer Funktion oder Prozedur. Sie besteht aus dem Namen der Funktion und der Anzahl und Reihenfolge der zuweisungskompatiblen Parameterdatentypen. Der …   Deutsch Wikipedia

  • Is-a — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Methodensignatur — Eine Signatur (oder Methodensignatur) definiert in der Programmierung die formale Schnittstelle einer Funktion. Sie besteht aus dem Namen der Funktion, der Anzahl, Reihenfolge und Typen ihrer Parameter und dem Typ des oder der… …   Deutsch Wikipedia

  • Virtuelle Funktion — Virtuelle Methode ist ein Begriff, der im Zusammenhang mit objektorientierten Programmiersprachen benutzt wird. Sie ist eine Methode einer Klasse, deren Einsprungadresse erst zur Laufzeit ermittelt wird. Dieses sogenannte dynamische Binden… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”