动态内存管理

说明

  • XWOS不使用picolibc提供的动态内存管理的算法。使用的是内存池算法:

移植方法

  • 源码路径:xwmd/libc/picolibcac/mem.c
  • 重写picolibc的函数:
void * malloc(size_t n);
void * realloc(void * p, size_t n);
void * calloc(size_t elem_nr, size_t elem_sz);
void * memalign(size_t alignment, size_t n);
void * valloc(size_t n);
void * pvalloc(size_t n);
void free(void * p);
int getpagesize(void);
  • 无需重写的函数:
int posix_memalign(void ** memptr, size_t align, size_t size); // picolibc提供基于memalign实现
void * aligned_alloc(size_t alignment, size_t size); // picolibc提供基于memalign实现
  • 还没实现的函数:
    • mallopt
    • malloc_usable_size
    • malloc_stats
    • mallinfo