stdlib中的xmalloc,xfree,xinit_mempool

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

  • This function must be used to setup the memory pool before any other memory management functions (xcalloc, xfree, xmalloc, xrealloc) can be called. Call the xinit_mempool function only once at the beginning of your program.
  • Source code for this routine is provide in the LIB folder. You may modify the source to customize this function for your particular hardware environment.
  • This function uses xhuge pointers to objects and may be used in any memory model other than Tiny Model.
  • Each memory block needs 8 bytes overhead to handle the allocation information. In addition another 8 bytes are required for init_mempool itself. Therefore if you want to allocate 2 blocks with 100 bytes each, the memory pool size must be 224 bytes.
Return Value

None.

See Also

xcalloc, xfree, xmalloc, xrealloc

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

  • Source code for this routine is provide in the LIB folder. You may modify the source to customize this function for your particular hardware environment.
  • This function uses xhuge pointers to objects and may be used in any memory model other than Tiny Model.
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

xcalloc, xfree, xinit_mempool, xrealloc

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

  • Source code for this routine is provide in the LIB folder. You may modify the source to customize this function for your particular hardware environment.
  • This function uses xhuge pointers to objects and may be used in any memory model other than Tiny Model.
Return Value

None.

See Also

xcalloc, xinit_mempool, xmalloc, xrealloc

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值