Thema: Delphi Speicher reallokieren

Einzelnen Beitrag anzeigen

Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Speicher reallokieren

  Alt 10. Okt 2003, 07:24
Zitat von Phoenix:
Hab grad festgestellt, das das so gar nicht klappen kann

Weil:
Die Deklaration von PByteArray:
Delphi-Quellcode:
  PByteArray = ^TByteArray;
  TByteArray = array[0..32767] of Byte;
Demnach hat ein PByteArray^ immer eine Länge von 32768 byte, dann kann man reallokieren wollen wie man möchte.
Nein... wenn du nur 15 Bytes reservierst, dann hat dein Array auch nur 15 Bytes auf die du zugreifen kannst, egal wie TByteArray jetzt deklariert ist! Durch das dereferenzieren des Pointers simulierst du zwar praktisch einen Zugriff auf ein Array mit konstanter Länge von 32767 Bytes, aber wie lang das Array jetzt wirklich ist (also wieviel reservierter Speicherplatz dahinter steckt), das kommt nur darauf an wieviel zu alloziert hast!

BTW: ein dyn. Array ist bereits nur ein Pointer der implizit dereferenziert wird, einen Pointer auf ein dyn. Array zu deklarieren ist also irgendwie "doppeltgemoppelt"!
Manuel Pöter
  Mit Zitat antworten Zitat