Intelligenter Zeiger
# Intelligenter Zeiger

Intelligente Zeiger oder Smartpointer werden in vielen gängigen Programmiersprachen wie etwa C++ verwendet. Es handelt sich um spezielle Zeiger, die gegenüber einfachen Zeigervariablen mit zusätzlichen Funktionen und Eigenschaften ausgestattet sind. Intelligente Zeiger erweitern also einfache Zeiger und statten sie mit mehr Funktionalität aus, lassen sich aber wie normale Zeigervariablen benutzen.

## Beispiel

Um das versehentliche Freigeben von Speicherbereichen zu vermeiden, auf die noch immer von dem einen oder anderen Zeiger verwiesen wird, verwendet man referenzzählende Zeiger. Dazu enthält der intelligente Zeiger eine Zählervariable, die bei jedem Kopieren des Zeigers erhöht wird. Versucht nun ein Programmteil den Speicher freizugeben, auf den der Zeiger verweist, so wird der Wert der Zählervariable zunächst verringert. Erst wenn der Zähler den Wert 0 erreicht, wird der Speicher freigegeben (→ Referenzzählung).

## Alternativen

Es gibt Programmiersprachen, wie zum Beispiel Oberon, Java oder C# und Laufzeitsysteme, wie zum Beispiel BlackBox Component Builder, Java Runtime Environment (JRE) oder .NET, bei denen die referenzierten Speicherbereiche aller Zeigervariablen „intelligent“ sind und ausschließlich durch eine automatische Speicherbereinigung verwaltet werden.