_GetHandSize( ) API Library Routine Example
The following example allocates memory blocks of various size from 1 to 215 and shows the value returned by _GetHandSize( ) for these allocations. Notice that the value returned by _GetHandSize( ) is only sometimes exactly equal to the size requested by _AllocHand( ); usually it's a bit more.
SET LIBRARY TO GETHANDS
#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 5;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
MHANDLE mh;
unsigned int allocSize;
for (allocSize = 1;; allocSize *= 2)
{
if ((mh = _AllocHand(allocSize)) == 0)
{
_Error(182); // "Insufficient memory"
}
_PutStr("\n_AllocHand("); putLong(allocSize); _PutStr(")");
_PutStr("\n_GetHandSize() ="); putLong(_GetHandSize(mh));
_FreeHand(mh);
if (allocSize == 32768)
{
break;
}
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};