AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array zuweisungen

Ein Thema von TurboMagic · begonnen am 13. Jan 2019 · letzter Beitrag vom 15. Jan 2019
 
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
722 Beiträge
 
Delphi 12 Athens
 
#3

AW: Array zuweisungen

  Alt 14. Jan 2019, 11:46
TBytes ist ein reference type (d. h. eine Variable dieses Typs enthält einen Pointer auf den Speicher, der die eigentlichen Daten enthält). Das erste Konstrukt verändert direkt den Inhalt des übergebenen TBytes arrays, ohne irgendwelchen neuen Speicher zu allokieren. Das sieht auf den ersten Blick seltsam aus, da der Parameter ja als Const deklariert ist. Wieso kann man ihn also modifizieren? Das geht aber bei allen reference types, da der Compiler nur den übergebenen Pointer als Const behandelt und nicht den Speicher, auf den der Pointer verweist. Trotzdem ist das Konstrukt etwas "anrüchig", weil die Deklaration ja auf den ersten Blick so aussieht, als wenn die Methode den übergebenen Parameter nicht ändern wird. Sollte man vermeiden, die Methode hat so einen nicht direkt ersichtlichen side effect.

Das zweite Konstrukt macht es richtig, es allokiert einen neuen, separaten array und liest nur aus dem übergebenen array; Decode speichert das Resultat seiner Arbeit in diesem neuen Array. Das Verhalten der Methode stimmt also mit den Erwartungen des Programmieres überein, der nur die Deklaration der Methode kennt und sich nicht deren Implementierung angesehen hat. Dafür zahlt man einen geringen Aufpreis in erhöhtem Aufwand für die Speicherverwaltung, aber das ist gut angelegtes Kapital.
Peter Below
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz