Определяет, достаточно ли памяти для того, чтобы выделить блок памяти размером в size байт.
BOOL _MemAvail(unsigned long size) unsigned int size; /* Размер блока памяти в байтах. */ |
Примечания
Функция возвращает значение "истина" (целое число, отличное от 0), если свободной памяти достаточно, или "ложь" (0) в противном случае.
For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.
Пример
В следующем примере строится связный список выделяемых блоков памяти размером 1 Кбайт каждый, пока не будет исчерпана вся доступная память. После этого все выделенные блоки освобождаются и возвращается их количество. _MemAvail( ) используется для выхода из первого цикла while.
Код Visual FoxPro
Copy Code | |
|---|---|
SET LIBRARY TO MEMAVAIL ? MEMAVAIL() && displays approx. memory available in K | |
Код C
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
}; | |
Смотрите также
Справочное руководство
Процедура библиотеки API _AllocHand( )Процедура библиотеки API _FreeHand( )
Процедура библиотеки API _GetHandSize( )
Процедура библиотеки API _HandToPtr( )
Процедура библиотеки API _HLock( )
Процедура библиотеки API _HUnLock( )
Процедура библиотеки API _SetHandSize( )
Концепции
Процедуры библиотеки API от A до ZПрочие ресурсы
Доступ к API Visual FoxProПроцедуры библиотеки API по категориям
© Microsoft Corporation. All rights reserved. Microsoft is not reponsible for the contents of the translated help topics.