1.xinit_mempool
Summary | #include <stdlib.h> void xinit_mempool ( void xhuge *p, /* start of memory pool */ unsigned long size); /* length of memory pool */ |
Description | The xinit_mempool function initializes the memory management routines and provides the starting address and size of the memory pool. The p argument points to a memory area in xdata which is managed using the xcalloc, xfree, xmalloc, and xrealloc library functions. The size argument specifies the number of bytes to use for the memory pool. Note
|
Return Value | None. |
See Also | |
Example | #include <stdlib.h> void tst_init_mempool (void) { xdata void *p; int i; /* initialize memory pool at xdata 0x2000 for 4096 bytes */ xinit_mempool (&XBYTE [0x2000], 0x1000); p = xmalloc (100); for (i = 0; i < 100; i++) ((char *) p)[i] = i; xfree (p); } |
2.xmalloc
Summary | #include <stdlib.h> void xhuge *xmalloc ( unsigned long size); /* block size to allocate */ |
Description | The xmalloc function allocates a memory block from the memory pool of size bytes in length. Note
|
Return Value | The xmalloc function returns a pointer to the allocated block or a null pointer if there is not enough memory to satisfy the allocation request. |
See Also | |
Example | #include <stdlib.h> #include <stdio.h> /* for printf */ void tst_malloc (void) { void xhuge *p; p = xmalloc (1000); /* allocate 1000 bytes */ if (p == NULL) printf ("Not enough memory space/n"); else printf ("Memory allocated/n"); |
3.xfree
Summary | #include <stdlib.h> void xfree ( void xhuge *p); /* block to free */ |
Description | The xfree function returns a memory block to the memory pool. The p argument points to a memory block that was previously allocated with the xcalloc, xmalloc, or xrealloc functions. Once it has been returned to the memory pool by the free function, the block is available for subsequent allocation. If p is a null pointer, it is ignored. Note
|
Return Value | None. |
See Also | |
Example | #include <stdlib.h> #include <stdio.h> /* for printf */ void tst_free (void) { void xhuge *mbuf; printf ("Allocating memory/n"); mbuf = xmalloc (1000); if (mbuf == NULL) { printf ("Unable to allocate memory/n"); } else { xfree (mbuf); printf ("Memory free/n"); } } |
C166 User's Guid http://www.keil.com/support/man/docs/c166/c166_intro.htm