_MemAvail( ), API-Bibliotheksroutine
Bestimmt, ob genügend Speicher zum Zuordnen eines Speicherhandles von size Bytes verfügbar ist.
BOOL _MemAvail(unsigned long size)
unsigned int size; /* Size of memory handle in bytes. */
Hinweise
Die Funktion gibt Wahr (.T.) zurück (ganze Zahl ungleich 0), wenn genügend Speicher verfügbar ist. Andernfalls wird Falsch (.F.) zurückgegeben.
Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.
Beispiel
Im folgenden Beispiel wird so lange eine verkettete Liste von 1 KB-Speicherhandles erstellt, bis der verfügbare Speicher belegt ist. Dann werden die Zuweisungen freigegeben und die Zahl der durchgeführten Zuweisungen gemeldet. Mit _MemAvail( ) wird die erste WHILE-Schleife beendet.
Visual FoxPro-Code
SET LIBRARY TO MEMAVAIL
? MEMAVAIL() && displays approx. memory available in K
C-Code
#include <pro_ext.h>
#define ALLOCSIZE 1024
FAR Example(ParamBlk FAR *parm)
{
int nHandles = 0;
MHANDLE head = 0, mh;
while (_MemAvail(ALLOCSIZE))
{
mh = _AllocHand(ALLOCSIZE);
*((MHANDLE *) _HandToPtr(mh)) = head;
head = mh;
nHandles++;
}
_RetInt(nHandles, 10);
while (head != 0)
{
mh = *((MHANDLE *) _HandToPtr(head));
_FreeHand(head);
head = mh;
}
}
FoxInfo myFoxInfo[] = {
{"MEMAVAIL", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
Siehe auch
_AllocHand( ), API-Bibliotheksroutine | _FreeHand( ), API-Bibliotheksroutine | _GetHandSize( ), API-Bibliotheksroutine | _HandToPtr( ), API-Bibliotheksroutine | _HLock( ), API-Bibliotheksroutine | _HUnlock( ), API-Bibliotheksroutine | _SetHandSize( ), API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API