![]() |
Speicher reallokieren
Hi,
ich steh grad auf dem Schlauch was das neuallokieren von Speicher angeht: Beispiel:
Delphi-Quellcode:
procedure Test;
var myTest: PByteArray; begin GetMem(myTest,15); // was muss ich machen, um noch 10 Bytes mehr zu dem bereits allokierten // Speicher dazu zu bekommen? FreeMem(myTest,25); end; |
Re: Speicher reallokieren
Versuchs mal mit ReallocMem.
Grüße |
Re: Speicher reallokieren
Hab grad festgestellt, das das so gar nicht klappen kann :wall:
Weil: Die Deklaration von PByteArray:
Delphi-Quellcode:
Demnach hat ein PByteArray^ immer eine Länge von 32768 byte, dann kann man reallokieren wollen wie man möchte.
PByteArray = ^TByteArray;
TByteArray = array[0..32767] of Byte; Lösung:
Delphi-Quellcode:
Vorteil bei PMyByteArray: Ich allokiere ihn mit GetMem, kann dann aber mit Length und SetLength wie mit einem regulären Array arbeiten und auch eine neue Größe zuordnen, was bei PByteArray dank der konstanten Länge nicht funzt.
MyByteArray = array of byte;
PMyByteArray = ^MyByteArray; |
Re: Speicher reallokieren
Zitat:
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"! ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 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 by Thomas Breitkreuz