|
Reference · Data types Standard C · assert.h · complex.h · ctype.h · fenv.h · float.h · locale.h · math.h · setjmp.h · signal.h · stdarg.h · stddef.h · stdio.h · stdlib.h · string.h · time.h Standard C++ · IOstream · new Win32 · gc.h DOS, DOS32, Win16 · bios.h · cerror.h · disp.h · dos.h · dos.h part 2 · emm.h · handle.h · int.h · msmouse.h · sound.h · swap.h · tsr.h · winio.h Other C · bitops.h · conio.h · controlc.h · direct.h · fltpnt.h · io.h · page.h · process.h · search.h · sys\stat.h · tabsize.h · trace.h · utime.h · unmangle.h · util.h Other C++ · regexp.h · class complex |
page.hpage_callocHeaderpage.h Prototype unsigned page_calloc(void __BF *baseptr, unsigned size); Description The page_calloc function allocates and clears a block of data from a page heap that was initialized by page_initialize. baseptr points to a page heap initialized by page_initialize. size is the number of bytes to allocate. __BF is defined to be __far for the 16-bit memory models, and __near for the 32-bit memory models. Return Value The offset of the allocated data within baseptr. If the allocation fails, 0 is returned. Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_malloc page_free page_initialize page_realloc Example See page_initialize page_freeHeaderpage.h Prototype int page_free(void __BF *baseptr, unsigned p); Description The page_free function frees the memory at offset p in the page heap pointed to by baseptr, which was allocated by page_malloc or page_calloc. __BF is defined to be __far for the 16-bit memory models, and __near for the 32-bit memory models. Return Value Returns 0 on success or -1 if an error occurred (for example, if baseptr is bad, or memory is corrupted). Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_calloc page_malloc page_initialize Example See page_initialize page_initializeHeaderpage.h Prototype unsigned page_initialize(void __BF *baseptr, unsigned pagesize); Description The page_initialize function creates a page heap for the block of memory pointed to by baseptr which has a size of pagesize. The page_initialize function converts the buffer at baseptr to a page heap. __BF is defined to be __far for the 16-bit memory models, and __near for the 32-bit memory models. If you use page_initialize to create a page heap, you must use page_functions to manage this heap. Return Value The size of the largest allocatable block in baseptr. Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_calloc page_malloc page_free Example
/* Example for page_initialize */
#include <stdio.h>
#include <stdlib.h>
#include <page.h>
#include <dos.h>
#include <io.h>
#define HEAPSIZE 0x4000
static char buffer[HEAPSIZE];
void main()
{
unsigned maxsize, offset;
char __far *baseptr;
int __far *fp, i;
baseptr = MK_FP (getDS (), buffer);
maxsize = page_initialize (baseptr, HEAPSIZE);
printf (" The maximum allocateable size is
%04x bytes\n", maxsize);
if ((offset = page_malloc (baseptr, 0x800)) == 0)
{
printf (" Unable to allocate 0x800 bytes
with page_malloc ()\n");
exit (EXIT_FAILURE);
}
printf (" Allocated 0x800 bytes
successfully\n");
fp = page_toptr (baseptr, offset);
for (i = 0; i < 255; i++)
fp[i] = i;
printf (" fp[50] = %d\n", fp[50]);
if ((offset = page_realloc (baseptr, offset,
0x1000)) == 0)
{
printf (" Unable to reallocate 0x1000
bytes\n"); exit (EXIT_FAILURE);
}
printf (" Reallocated to 0x1000 bytes\n");
fp = page_toptr (baseptr, offset);
printf (" fp[50] = %d\n", fp[50]);
maxsize = page_maxfree(baseptr);
printf (" Maximum free block remaining is %04x
bytes \n", maxsize);
if (page_free (baseptr, offset) == -1)
{
printf (" Unable to free allocated
block\n");
exit (EXIT_FAILURE);
}
printf (" Page freed successfully\n");
}
Output The maximum allocateable size is 3ff4 bytes Allocated 0x800 bytes successfully fp[50] = 50 Reallocated to 0x1000 bytes fp[50] = 50 Maximum free block remaining is 27f0 bytes Page freed successfully page_mallocHeaderpage.h Prototype unsigned page_malloc(void __BF *baseptr, unsigned size); Description The page_malloc function allocates a block of data from a page heap. baseptr points to a page heap that was initialized by page_initialize; size indicates the number of bytes to allocate. __BF is defined to be __far for the 16-bit memory models, and __near for the 32-bit memory models. Return Value The offset of the allocated data within baseptr. If the allocation fails, 0 is returned. Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_calloc page_initialize page_free page_realloc Example See page_initialize page_maxfreeHeaderpage.h Prototype unsigned page_maxfree(void __BF *baseptr); Description The page_maxfree function determines size of largest free block in the page heap pointed to by baseptr. This heap must have been initialized with page_initialize. __BF is defined to be __far for the 16-bit memory models, and __near for the 32-bit memory models. Return Value The size of the largest free block. Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_initialize page_free Example See page_initialize page_reallocHeaderpage.h Prototype unsigned page_realloc(void __BF *baseptr, unsigned p, unsigned nbytes); Description The page_realloc function reallocates (changes the size of) a block of memory that was allocated by page_malloc or page_calloc. __BF is defined to be __far for the 16-bit memory models, and __near for the 32-bit memory models. Return Value The offset of the reallocated data block from baseptr. If the reallocation fails, 0 is returned. Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_calloc page_malloc page_initialize page_free Example See page_initialize page_sizeHeaderpage.h Prototype unsigned page_size(void __far *baseptr, unsigned p); Description The page_size function returns the number of bytes allocated for the block of memory at offset p that was allocated by page_malloc, page_calloc, or page_realloc. Return Value The number of bytes in the block. Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_calloc page_malloc page_initialize page_free page_realloc Example See page_initialize page_toptrHeaderpage.h Prototype void __BF * __near page_toptr(void __BF *baseptr, unsigned p); Description The page_toptr function converts a pointer to a page heap, and an offset into it of p, into a void *pointer. baseptr is a pointer to a heap that was initialized with page_initialize; p is an offset into the heap. __BF is defined to be __far for the 16-bit memory models, and __near for the 32-bit memory models. Return Value A far pointer to the position in the page corresponding to offset p. Compatibility DOS Windows 3.x Phar Lap DOSX Win32 See Also page_initialize Example See page_initialize |