![]() |
In einer Proc deklarierte dynamische Arrays müssen vor Proc-Ende gelöscht werden?!
Hallo,
irgendwie hatte sich die Frage für mich bis dato noch gar nicht so richtig ergeben, weil ich dynamische Arrays bisher eigentlich immer gerne als Felder der Form selbst deklariert habe. Nun aber habe ich mal ein paar größere davon in einer Procedure deklariert und bin jetzt irgendwie an der Frage hängengeblieben, ob der von ihnen belegte Speicherplatz am Ende der Proc nicht eigentlich auch freigegeben werden müsste. Weil ähnlich wie bei StringListen, die Größe des von ihnen benötigten Speicherplatzes vorab ungewiss ist und dieser deswegen auch auf dem Heap verortet sein muss. Und weswegen solche dynamischen Arrays also tatsächlich vorm Proc-Ende auch per SetLength(blabla_dynArray,0) freigegeben werden müssen? bzw. Und weswegen solche dynamischen Arrays, wenn sie als Felder im privat/public-Deklarationsteil der Form deklariert sind, dann also auch in "FormDestroy" freizugeben sind? Thx im Voraus rXdY |
AW: In einer Proc deklarierte dynamische Arrays müssen vor Proc-Ende gelöscht werden?
Dynamische Arrays sind ebenso wie Strings reference-counted. Sobald sie ihren Scope verlieren und keine andere Referenz mehr darauf existiert werden sie automatische freigegeben. Bei einer Methode, Procedure oder Function geschieht das beim Verlassen derselben. Bei Instanzen einer Klassen die Freigabe der Instanz.
|
AW: In einer Proc deklarierte dynamische Arrays müssen vor Proc-Ende gelöscht werden?
Aber nicht vergessen den Inhalt des Array ggf. freizugeben ;-) just saying
|
AW: In einer Proc deklarierte dynamische Arrays müssen vor Proc-Ende gelöscht werden?
Zitat:
|
AW: In einer Proc deklarierte dynamische Arrays müssen vor Proc-Ende gelöscht werden?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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