Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Delphieigenes speichermanagement und "new" (https://www.delphipraxis.net/38521-delphieigenes-speichermanagement-und-new.html)

SirThornberry 20. Jan 2005 13:34


Delphieigenes speichermanagement und "new"
 
Wie so ziemlich jedem bekannt ist hat Delphi einen eigenen Speichermanager weshalb das hantieren zwischen DLL und Hauptprogramm ohne ShareMem mit strings nicht geht.

Desweiteren hab ich irgendwo gelesen das sich der Speichermanager immer größere Stücken speicher vom Betriebssystem anfordert und diese dann in der Anwendung bei Bedarf in kleinen Stücken bereitstellt.

Wie ist das jetzt wenn ich mit "new" speicher anfordere, bekomme ich dann speicher aus so einem größeren Speicherstück zugewiesen oder wird der speicher direkt von Windows angefordert? wenn der Speicher direkt von Windows kommt: in welcher DLL ist dann die "new" funktion - und wenn der Speicher nicht von Windows kommt: Gibts es in irgend einer Windows-DLL eine Funktion die mir speicher direkt vom betriebssystem holt (und wie heißt die DLL + Funktionsnamen)?

Hintergrund der Frage: Wenn man beim programmieren mit dem Speicher nicht gerade schonen umgeht, kann es vorkommen das eine Fehler "Out of Memory" kommt. Was jedoch keinen Sinn macht da schließlich andere Programm noch ohne Probleme laufen und die Auslagerungsdatei nicht ihr Maximum erreicht hat. Also theoretich müsste Windows noch genügend speicher zur Verfügung haben und trotzdem bringt mir eben die Anwendung besagten Fehler..

Christian Seehase 20. Jan 2005 21:31

Re: Delphieigenes speichermanagement und "new"
 
Moin Sir Thornberry,

new benutzt den internen Speichermanager.
Um direkt selber Speicher abzufordern schau Dir mal MSDN-Library durchsuchenLocalAlloc (Heap) bzw. MSDN-Library durchsuchenVirtualAlloc an.

SirThornberry 20. Jan 2005 21:33

Re: Delphieigenes speichermanagement und "new"
 
danke :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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