zoukankan      html  css  js  c++  java
  • 内存池的使用

    内存池的使用

    ​ 内存池在创建时先从系统中获取一大块内存(静态或动态),然后分成相同大小的多个小内存块,这些小内存块通过链表连接起来(此链表也成为空闲链表)。线程每次申请内存块时,系统从空闲链表中取出链头上第一个内存块,提供给申请者。

    ​ 也就是说,内存块除了分配的大小外,还有一个指针来链接其他内存块。

    struct rt_mempool
    {
        struct rt_object parent;
        void	*start_address;
        rt_size_t	size;
        rt_size_t	block_size;
        rt_uint8_t	*block_list;
        rt_size_t	block_total_count;
        rt_size_t	block_free_count;
        rt_list_t	suspend_thread;
        rt_size_t	suspend_thread_count;
    }
    typedef struct rt_mempool *rt_mp_t;
    struct rt_mempool static_mp;
    rt_mp_t dynamic_mp;
    

    初始化与脱离

    rt_err_t rt_mp_init(struct rt_mempool *mp,const char*name,void *start,
                       rt_size_t size,rt_size_t block_size)
    rt_err_t rt_mp_detach(struct rt_mempool *mp)
    

    创建与删除

    rt_mp_t rt_mp_create(const char*name,rt_size_t block_count,rt_size_t block_size)
    rt_err_t rt_mp_delete(rt_mp_t mp)
    

    申请内存块

    void *rt_mp_alloc(rt_mp_t mp,rt_int32_t time)
    

    释放内存块

    void rt_mp_free(void *block)
    
  • 相关阅读:
    图像压缩算法
    Haar-like特征来龙去脉
    Haar-like特征来龙去脉
    DSP VLIB实验
    DSP VLIB实验
    “主宰世界”的10种算法短评
    “主宰世界”的10种算法短评
    matlab截取图像
    matlab截取图像
    matlab求取积分
  • 原文地址:https://www.cnblogs.com/zhang-han/p/14123135.html
Copyright © 2011-2022 走看看