Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Fehler bei setlength von dynamischen Array

  Alt 5. Jan 2007, 09:51
Hallo,

in erster Linie solltest du etwas vorsichtiger mit dynamischen Arrays umgehen. Solche Arrays sind eigentlich Zeiger und dein Aufruf von Setlength() verändert diesen Zeiger. Nehmen wir an, deine beim aktuellen Player gespeicherten Points hätten den Zeigerwert $900000. Durch deine Zuweisung an die lokale Variable points zeigt diese auf den gleichen Speicherbereich. Durch deinen Aufruf von Setlength() wird ein vergrößerter Speicherbereich angelegt. Wenn möglich, dann wird einfach der vorhandene Speicherblock vergrößert und das neue Item ist uninitialisiert. Ist nicht genügend Platz, dann wird ein neuer Speicherblock an einer anderen Stelle angefordert, der alte Inhalt dort hinein kopiert und deine Array-Variable aktualisiert, so dass sie anschließend auf $900042 zeigt. Deine Original-Points zeigen weiterhin auf den alten Speicherblock. Musste der alte Speicherblock aufgegeben werden, dann stehen deine Chancen auf eine Exception gut.

Freundliche Grüße
  Mit Zitat antworten Zitat