_MemAvail( ) (Rutina de biblioteca API)
Determina si hay suficiente memoria disponible para asignar un controlador de memoria de size bytes.
BOOL _MemAvail(unsigned long size)
unsigned int size; /* Size of memory handle in bytes. */
Observaciones
La función devuelve verdadero (un entero distinto de 0) si hay suficiente memoria disponible; de lo contrario, devuelve falso (0).
Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.
Ejemplo
El ejemplo siguiente crea una lista vinculada de asignaciones de controlador de memoria de 1 KB hasta que se utilice la memoria disponible. A continuación, libera las asignaciones y devuelve el número de asignaciones realizadas. _MemAvail( ) se emplea para terminar el primer bucle while.
Código Visual FoxPro
SET LIBRARY TO MEMAVAIL
? MEMAVAIL() && displays approx. memory available in K
Código C
#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
};
Vea también
_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HLock( ) (Rutina de biblioteca API) | _HUnLock( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro