Определяет, достаточно ли памяти для того, чтобы выделить блок памяти размером в 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
![]() | |
---|---|
SET LIBRARY TO MEMAVAIL ? MEMAVAIL() && displays approx. memory available in K |
Код 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 }; |
Смотрите также
Справочное руководство
Процедура библиотеки 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.