memblock.c

■ 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

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