![]() |
Reservierten Speicher dynamisch vergrößern?
Hi,
Beispiel:
Delphi-Quellcode:
kann man diesen reservierten Speicher nachträglich vergrößern? Also wenn nach diesem aufruf P = $AAAAAAAA dann soll nach der Speichervergrößerung P immernoch = $AAAAAAAA sein, es soll hintendran eben nur mehr Platz sein :mrgreen:
var p: Pointer;
begin GetMem(P,20); Gruß Neutral General |
Re: Reservierten Speicher dynamisch vergrößern?
Verwende ReallocMem.
|
Re: Reservierten Speicher dynamisch vergrößern?
Hi,
Habe gerade das hier ausprobiert:
Delphi-Quellcode:
Aber $0105E1B8 <> $010734E0 :?
procedure TForm1.Button1Click(Sender: TObject);
var p: Pointer; begin GetMem(P,20); Caption := IntToHex(Integer(p),8); ReallocMem(p,24); Caption := Caption + ' ' + IntToHex(Integer(p),8); FreeMem(p); end; Oder sieht es nur so aus als wärs was anderes?^^ Bzw richtiger: Werden die alten Daten mitkopiert? Wahrscheinlich oder? EDIT: Ja genau wie ich vermutet hatte. Danke :) |
Re: Reservierten Speicher dynamisch vergrößern?
Nö, gibts nicht. wie denn auch, wenn kein speicher hinten dran frei ist, kann er doch nicht alle anderen speicherblöcke verschieben... also, muss er sich selbst verschieben, und so, ist deine adresse im anschluss eine andere.
|
Re: Reservierten Speicher dynamisch vergrößern?
Zitat:
|
Re: Reservierten Speicher dynamisch vergrößern?
ReallocMem prüft eben, ob hintendran frei ist, und vergrößert entweder den Block oder verschiebt an eine andere Stelle. Wie man sich denken kann, wird ReallocMem auch bei SetLength und TList verwendet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20: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-2025 by Thomas Breitkreuz