首页 > 其他 > 详细

memblock.c

时间:2020-05-31 11:36:27      阅读:43      评论:0      收藏:0      [点我收藏+]

struct pa_memblock *pa_memblock_new(size_t length)
memblock分配,分配类型是PA_MEMBLOCK_APPENDED。
pa_memblock 和 数据是连续分配的,由pa_memblock中data指向分配的数据区域。

struct pa_memblock *pa_memblock_new_fixed(void *d, size_t length)
memblock分配,分配类型是PA_MEMBLOCK_FIXED。
将pa_memblock中data指向传来的数据d。与dynamic的区别,还不太清楚(从代码看不负责销毁数据d)。

struct pa_memblock *pa_memblock_new_dynamic(void *d, size_t length)
memblock分配,分配类型是PA_MEMBLOCK_DYNAMIC。
将pa_memblock中data指向传来的数据d,从pa_memblock_unref看,dynamic这种方式还负责销毁数据d。

struct pa_memblock* pa_memblock_ref(struct pa_memblock*b)
引用计数增1

void pa_memblock_unref(struct pa_memblock*b)
引用计数减1,如果为引用计数为0,对memblock分配的buffer的释放。
PA_MEMBLOCK_APPENDED : memblock + data
PA_MEMBLOCK_FIXED : memblock
PA_MEMBLOCK_DYNAMIC: memblock + data (外部申请的)

void pa_memblock_unref_fixed(struct pa_memblock *b)
PA_MEMBLOCK_FIXED类型的释放,引用计数为1时,等同于pa_memblock_unref。
引用计数大于1时,类型由PA_MEMBLOCK_FIXED转为PA_MEMBLOCK_DYNAMIC。
疑问用户不知道这个变化,下次使用哪个函数释放pa_memblock_unref还是pa_memblock_unref_fixed?

unsigned pa_memblock_get_count(void)
返回memblock_count

unsigned pa_memblock_get_total(void)
返回memblock_total








memblock.c

原文:https://www.cnblogs.com/renhl/p/12996643.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!