Determines whether enough memory is available for you to allocate a memory handle of size bytes.
BOOL _MemAvail(unsigned long size) unsigned int size; /* Size of memory handle in bytes. */ |
Remarks
The function returns True (an integer other than 0) if enough memory is available, or False (0) if not.
For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.
Example
The following example builds a linked list of 1K memory handle allocations until available memory is used. It then frees allocations and returns the number of allocations made. _MemAvail(В ) is used to terminate the first while loop.
Visual FoxPro Code
В | Copy Code |
---|---|
SET LIBRARY TO MEMAVAIL ? MEMAVAIL() && displays approx. memory available in K |
C Code
В | Copy 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 }; |
See Also
Other Resources
_AllocHand(В ) API Library Routine_FreeHand(В ) API Library Routine
_GetHandSize( ) API Library Routine
_HandToPtr( ) API Library Routine
_HLock(В ) API Library Routine
_HUnLock( ) API Library Routine
_SetHandSize(В ) API Library Routine
Accessing the Visual FoxPro API
API Library Routines A-Z
API Library Routines by Category