Share via


_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