Hallo,
ich habe ein kleines Verständnissproblem mit den API Funktionen der Speicherverwaltung.
Vielleicht kann mir jemand folgendes erklären:
<PRE>
SnapMemory := GlobalAlloc(GPTR, size);
temp := GlobalLock(SnapMemory);
.. Speicher benutzen ..
GlobalUnlock(SnapMemory);
GlobalFree(SnapMemory);
</PRE>
Das funktioniert hervorragend. Nun würde ich den Speicher aber gerne direkt um "realen" Speicher anlegen, dazu verwende ich die Funktion VirtualAlloc:
<PRE>
SnapMemory := GlobalAlloc(GPTR, size);
temp := GlobalLock(SnapMemory);
SnapPointer := VirtualAlloc(temp, size, MEM_COMMIT, PAGE_READWRITE OR PAGE_NOCACHE);
</PRE>
Ich erhalte einen gültigen Pointer und kann den Speicher auch ganz normal benutzen.
Aber ich kriege aus der Hilfe nicht wirklich heraus, wie der Befehl funktioniert und was hier passiert.
Außerdem würde ich gerne den Speicher "final sperren" und dafür
<BR> VirtualLock<BR>
benutzen, dieser Befehl schlägt aber immer fehl. Warum???
Danke, Danke
ich habe ein kleines Verständnissproblem mit den API Funktionen der Speicherverwaltung.
Vielleicht kann mir jemand folgendes erklären:
<PRE>
SnapMemory := GlobalAlloc(GPTR, size);
temp := GlobalLock(SnapMemory);
.. Speicher benutzen ..
GlobalUnlock(SnapMemory);
GlobalFree(SnapMemory);
</PRE>
Das funktioniert hervorragend. Nun würde ich den Speicher aber gerne direkt um "realen" Speicher anlegen, dazu verwende ich die Funktion VirtualAlloc:
<PRE>
SnapMemory := GlobalAlloc(GPTR, size);
temp := GlobalLock(SnapMemory);
SnapPointer := VirtualAlloc(temp, size, MEM_COMMIT, PAGE_READWRITE OR PAGE_NOCACHE);
</PRE>
Ich erhalte einen gültigen Pointer und kann den Speicher auch ganz normal benutzen.
Aber ich kriege aus der Hilfe nicht wirklich heraus, wie der Befehl funktioniert und was hier passiert.
Außerdem würde ich gerne den Speicher "final sperren" und dafür
<BR> VirtualLock<BR>
benutzen, dieser Befehl schlägt aber immer fehl. Warum???
Danke, Danke
Comment