Hängender Zeiger

Hängender Zeiger

Ein hängender Zeiger oder wilder Zeiger (engl. dangling pointer) bezeichnet in der Informatik einen Zeiger, der einen ungültigen Wert enthält und dadurch auf einen nicht vorhandenen oder nicht dem Zeiger zugeordneten Speicherbereich verweist.

Hängende Zeiger kommen oft dadurch zustande, dass sie nicht initialisiert wurden, aber auch dadurch, dass sie auf einen Speicherbereich verweisen, der bereits freigegeben wurde.

Hängende Zeiger können für den Programmlauf unvorhersehbare Auswirkungen haben und das Programm zum Absturz bringen.

Diese Unvorhersehbarkeit rührt daher, dass ein Zugriff auf einen bereits freigegebenen Speicherbereichen nicht zwangsläufig sofort einen Laufzeitfehler (Schutzverletzung) auslöst, da zwischen der Speicherfreigabe durch den Programmierer und der tatsächlichen Freigabe durch das Laufzeitsystem noch eine gewisse Zeit vergehen kann. Findet in dieser (unvorhersagbaren) Zwischenzeit noch ein Zugriff auf den freigegebenen Speicher statt (Zeile (*) im Beispiel), so löst er keinen Fehler aus. Da dies aber nicht reproduzierbar ist, sind diese sporadischen Fehler besonders heimtückisch.

Beispiel

C++

#include <iostream>
 
using namespace std;
 
int main()
{
    int * pPointer = new int; // Pointer vom Typ integer angelegt
    cout << pPointer;         // Das würde die Speicheradresse im Heap anzeigen
    delete pPointer;          // Speicher freigeben
    cout << pPointer;         // Zeigt noch immer die Speicheradresse im Heap an,
                              //     obwohl sie freigeben wurde => Dangling Pointer
    // *pPointer = 10;        // (*) Zugriff auf diesen Pointer würde (bzw. kann) einen fatalen Fehler auslösen
    pPointer = 0;             // pPointer ist jetzt kein Dangling Pointer mehr, siehe Nullpointer
    return 0;
}

Es zeugt von gutem Programmierstil nach einem delete den Pointer auf 0 zu setzen, auch wenn auf den Pointer nicht mehr zugegriffen wird.

Siehe auch

Nullzeiger


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

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

  • Wilder Zeiger — Ein hängender Zeiger oder wilder Zeiger (engl. dangling pointer) bezeichnet in der Informatik einen Zeiger, der einen ungültigen Wert enthält und dadurch auf einen nicht vorhandenen oder nicht dem Zeiger zugeordneten Speicherbereich verweist.… …   Deutsch Wikipedia

  • Automatische Speicherbereinigung — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Dangling pointer — Ein hängender Zeiger oder wilder Zeiger (engl. dangling pointer) bezeichnet in der Informatik einen Zeiger, der einen ungültigen Wert enthält und dadurch auf einen nicht vorhandenen oder nicht dem Zeiger zugeordneten Speicherbereich verweist.… …   Deutsch Wikipedia

  • Finalisierung — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Garbage-Collection — (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem Speicher und anderen… …   Deutsch Wikipedia

  • Garbage-Collector — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Garbage Collector — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Garbage collection — (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem Speicher und anderen… …   Deutsch Wikipedia

  • Speicherbereinigung — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Bohrbug — Ein Programmfehler oder Softwarefehler, häufig auch im Deutschen mit dem englischen Wort Bug (genau genommen Wanze, im erweiterten Sinne auch für jedes andere Insekt; Aussprache [bʌg]) bezeichnet, ist ein Ausdruck aus dem EDV Bereich. Ein Fehler… …   Deutsch Wikipedia

Share the article and excerpts

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