Handles

Wechseln zu: Navigation, Suche

Im Gegensatz zu einem Zeiger, der direkt auf eine Speicheraddresse zeigt enthält ein Handle eine Art Seriennummer, mit der man eine alloziierte Resource eindeutig identifizieren kann. Wenn man statt Zeiger Handles einsetzt, können Datenstrukturen z. B. beliebig im Speicher verschoben werden, ohne dass jedes Handle dafür angepasst werden müsste (Zeiger würden durch so eine Aktion ihre Gültigkeit verlieren).

Der Nachteil beim Einsatz von Handles ist, dass man mit ihnen eine weitere Zwischenschicht in den Zugriff auf Speicherbereiche einfügt - der Zugriff geschieht indirekt über eine Funktion, die dem Handle den zugehörigen Zeiger zuordnet.

Der Vorteil ist, dass derart indirekt addressierte Speicherbereiche von z. B. Garbagecollector-Code beliebig verschoben werden können, ohne dass das Handle dadurch ungültig wird.