Vorteile & Nachteile von Zeigern

December 27

Je nachdem, wen Sie Fragen sind Zeiger ein Segen oder ein Fluch. Zeiger bieten einen Mechanismus zum direkt zugreifen und diese ändern, Objekte und Code im Speicher. Zeiger sind in vielen Programmiersprachen verwendet, zum Bearbeiten von Zeichenfolgen, die Übergabe von Parametern an Funktionen, Umgang mit Arrays von Daten und Erstellen von Listen und andere komplexe Datenstrukturen verknüpft. Während die Zeiger bieten Ihnen ein hohes Maß an Flexibilität für die Verwaltung von Speicher und Optimierung von Algorithmen, es gibt Nachteile. Erlernen der Verwendung von Zeigern ist schwierig für viele Programmierer und Debuggen von Problemen der Zeiger ist eine Herausforderung.

Optimierung

Zeiger bieten einen Performance-Vorteil dadurch, dass Sie Computer-Speicher direkt zugreifen. In einem Computerprogramm ist der schnellste Weg zugreifen und Ändern eines Objekts direkt Zugriff des physischen Speichers auf dem dieses Objekt gespeichert ist. Diese Technik wird häufig verwendet, um Algorithmen, die häufige oder sich wiederholende Zugriff auf große Datenmengen zu optimieren.

Sicherheit

Direkten Zugriff auf den Speicher bedeutet, dass Sie Dinge tun können, die vielleicht Sie nicht sollten. Je nach der Sprache, der Compiler und die Computerplattform konnten Sie unabsichtlich (oder absichtlich) Speicher zugreifen, die nicht Ihre zugänglich ist. Infolgedessen könnte Sie kritische Speicher überschreiben, ändern Sie den Code einer laufenden Anwendung oder dazu führen, dass Ihre oder eine andere Anwendung zu Verhalten oder unerwartet. Ein häufig auftretender Fehler ist, hinter dem Ende eines Arrays, das Zugriff auf den Speicher über das Ende des reservierten Speichers für dieses Array auszuführen.

Speicherverwaltung

Verwalten der Speichernutzung in einer Anwendung mit Zeigern bietet Flexibilität, sondern ist auch eine lästige Pflicht. Reservieren und Freigeben von Speicher nach Bedarf während der Laufzeit können Sie große Objekte, z. B. Arrays erstellen, schnell und sofort den Speicher freigeben, wenn er nicht mehr benötigt wird. Allerdings ist es auch einfache Erstellung von Speicherlecks durch die Neuzuweisung eines Zeigers ohne den Speicher, die es zuerst zeigen war. Garbagecollection liegt in Ihrer Verantwortung.

Funktionsparameter

Funktionen können nur einen Wert zurückgeben, aber sie können sich auch mehrere Parameter. Zeiger an Variablen als Parameter übergeben, eine Funktion kann verwendet werden, um die Werte dieser Variablen festzulegen, und die neuen Werte werden beibehalten, nachdem die Funktion. Möglichkeit, den Wert mehrerer Variablen auf einmal mit einem einzigen Funktionsaufruf festzulegen ist sauber und effizient. Es kann jedoch etwas verwirrend zu lesen, da Sie nicht feststellen können, wenn die übergebenen Variablen geändert werden oder nicht einfach durch Aufruf der Funktion betrachten. Sie benötigen zum Betrachten der Dokumentation Funktion, um zu erfahren, wie sich die Funktion verhält.

Funktionszeiger

Zeiger sind nicht nur für Objekte im Arbeitsspeicher; Sie können auch verwendet werden, für Funktionen, wodurch eine Funktion an eine andere Funktion als Parameter übergeben werden. Ein Funktionszeiger kann die Adresse eines eine Auswahl an Funktionen zugewiesen werden, sodass der Zeiger als eine Art Alias fungiert. Objektorientierte Programmiersprachen beseitigt die Notwendigkeit für Funktionszeiger mit Vererbung und Polymorphie.

Zeiger-Verwirrung

Zeiger sind ein verwirrende Thema für viele Programmierer, insbesondere diejenigen, die erfahren im Umgang mit Sprachen, die Zeiger und direct Memory Access nicht enthalten sind. Beharrlichkeit führt aber schnell zur Meisterschaft von Zeigern. Zeiger werden oft begleitet von obskuren Syntax. Konsistente Variable Benennungskonventionen können helfen, Ihren Code besser lesbar sein. Z. B. gemeinsame Namenskonventionen zählen die Verwendung "p" oder "Ptr" als Präfix für Zeiger Variablennamen.

Tipps

Verwenden Sie immer die Sprache für die Zuteilung von Speicher und prüfen, ob die Zuweisung Funktionen, um sicherzustellen, dass der Speicher reserviert wurde, bevor Sie ihn verwenden. Vorsichtig mit der Speicherverwaltung, und Speicher frei sein, wenn es nicht mehr benötigt wird. Wenn Sie einen Zeiger auf eine neue Speicheradresse zuordnen, stellen Sie sicher, der alte Speicher befreit ist, oder einen anderen Zeiger zugewiesen. Stellen Sie sicher, dass die Zeiger in Funktionen erstellt Besitz der übergeordneten Bereich zugeordnet sind oder der Speicher freigegeben wird, vor dem Beenden der Funktion.