Freigeben über


_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