Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unterschied zwischen GetMem() und GetMemory() (https://www.delphipraxis.net/118889-unterschied-zwischen-getmem-und-getmemory.html)

cmrudolph 17. Aug 2008 10:06


Unterschied zwischen GetMem() und GetMemory()
 
Hallo,
kann mir jemand sagen, wo der Unterschied zwischen den Funktionen GetMem() / FreeMem() und GetMemory() / FreeMemory() ist?

GetMemory() scheint die GetMem() Funktion des Delphi MemoryManagers zu wrappen. Diese ist aber nicht identisch zur System.GetMem() Prozedur.

mfG

DeddyH 17. Aug 2008 10:21

Re: Unterschied zwischen GetMem() und GetMemory()
 
Meine Hilfe sagt dazu:
Zitat:

GetMemory weist einen Speicherblock im Heap zu. Mit FreeMemory kann der Puffer wieder freigegeben werden.

Anmerkung: FreeMemory ist die mit C++ kompatible Version von FreeMem.

cmrudolph 17. Aug 2008 10:26

Re: Unterschied zwischen GetMem() und GetMemory()
 
Recht herzlichen Dank, meine Hilfe hat leider nur einen Eintrag zu GetMem aber nicht zu GetMemory.

mfG

himitsu 19. Aug 2008 18:08

Re: Unterschied zwischen GetMem() und GetMemory()
 
ich kann grad nicht nachsehn, aber mir war so, als wenn eines eine Exception wirft, wärend das Andere "nur" NIL zurückgibt, wenn der gewünschte Speicherblock nicht reserviert werden kann.

Luckie 19. Aug 2008 20:39

Re: Unterschied zwischen GetMem() und GetMemory()
 
Zitat:

Zitat von himitsu
ich kann grad nicht nachsehn, aber mir war so, als wenn eines eine Exception wirft, wärend das Andere "nur" NIL zurückgibt, wenn der gewünschte Speicherblock nicht reserviert werden kann.

Richtig, das eine wirft eine Exception bei einem Fehler, weil es eine Prozedur ist und das andere gibt NIL zurück, weil es eine Funktion ist, die die Speicheradresse zurückgibt. Frag mich aber nicht welches welche ist. GetMem ist, glaube ich, die Funktion.

Apollonius 19. Aug 2008 20:47

Re: Unterschied zwischen GetMem() und GetMemory()
 
Nein. GetMem ist eine Prozedur, die mit Compilermagic auf die Funktion System.@GetMem umgeleitet wird. Diese wiederum schmeißt im Fehlerfall reOutOfMemory, was SysUtils auf EOutOfMemory umleitet.
GetMemory hingegen überprüft den Rückgabewert des Memory Managers nicht.

Luckie 19. Aug 2008 21:29

Re: Unterschied zwischen GetMem() und GetMemory()
 
Also ist es genau umgekehrt?

Apollonius 19. Aug 2008 21:54

Re: Unterschied zwischen GetMem() und GetMemory()
 
Ja.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz