Kluger Zeigestock

In der Informatik ist ein kluger Zeigestock ein abstrakter Datentyp, der einen Zeigestock vortäuscht, während er zusätzliche Eigenschaften, wie automatische Müll-Sammlung oder Grenze-Überprüfung zur Verfügung stellt. Diese zusätzlichen Eigenschaften sind beabsichtigt, um durch den Missbrauch von Zeigestöcken verursachte Programmfehler zu reduzieren, während man Leistungsfähigkeit behält. Kluge Zeigestöcke gehen normalerweise die Gegenstände nach, zu denen sie zum Zweck des Speichermanagements hinweisen. Sie können auch verwendet werden, um andere Mittel, wie Netzverbindungen und Dateigriffe zu führen.

Der Missbrauch von Zeigestöcken ist eine Hauptquelle von Programmfehlern: Die unveränderliche Zuteilung, deallocation und Verweise anzubringen, der durch ein Programm schriftliche Verwenden-Zeigestöcke durchgeführt werden muss, führen die Gefahr ein, dass Speicherleckstellen vorkommen werden. Kluge Zeigestöcke versuchen, Speicherleckstellen durch das Bilden der Quelle deallocation automatisch zu verhindern: Wenn der Zeigestock (oder das letzte in einer Reihe von Zeigestöcken) zu einem Gegenstand zum Beispiel zerstört wird, weil er aus dem Spielraum geht, wird der spitze Gegenstand auch zerstört.

Mehrere Typen von klugen Zeigestöcken bestehen. Etwas Arbeit mit dem Bezugszählen, anderen durch das Zuweisen des Eigentumsrechts des Gegenstands zu einem einzelnen Zeigestock. Wenn die Sprache automatische Müll-Sammlung unterstützt (zum Beispiel, Java oder C#), dann sind kluge Zeigestöcke für das Speichermanagement unnötig, aber können noch im Handhaben anderer Mittel nützlich sein.

C ++ kluge Zeigestöcke

In C ++ können kluge Zeigestöcke als eine Schablone-Klasse durchgeführt werden, die mittels des Maschinenbedieners nachahmt, der, des Verhaltens von traditionellen (rohen) Zeigestöcken, (z.B dereferencing, Anweisung) überlädt, während sie zusätzliche Speicherverwaltungsalgorithmen zur Verfügung stellt.

Kluge Zeigestöcke können absichtliche Programmierung durch das Ausdrücken des Gebrauches eines Zeigestocks im Typ selbst erleichtern. Zum Beispiel, wenn ein C ++ Funktion einen Zeigestock zurückgibt, gibt es keine Weise zu wissen, ob der Anrufer das Gedächtnis löschen sollte, das darauf angespitzt ist, wenn der Anrufer mit der Information beendet wird.

some_type* ambiguous_function ;//Was sollte mit dem Ergebnis getan werden?

</Quelle>

Traditionell ist das mit Anmerkungen gelöst worden, aber das kann fehlbar sein. Durch das Zurückbringen,

auto_ptr

</Quelle>

die Funktion macht ausführlich, dass der Anrufer Eigentumsrecht des Ergebnisses, und außerdem nehmen wird, dass, wenn der Anrufer nichts tut, kein Gedächtnis durchgelassen wird.

unique_ptr

C ++ 11, stellt definiert im Kopfball zur Verfügung


Uechi-ryū / Wendover
Impressum & Datenschutz