ffmpeg 内存管理

ffmpeg的内存管理代码位于libavutil\mem.c,主要定义了两种内存管理方式。

1) 原生malloc

有几个常见的内存管理函数,av_malloc(),av_realloc(),av_mallocz(),av_calloc(),av_free(),av_freep()。

av_malloc:几种复杂的内存分配方式主要是为了字节对齐

av_mallocz:分配内存,然后清零内存中的数据

av_free:释放内存

av_freep:释放内存,然后将指针置空

av_calloc:内部还是调用的av_mallocz只是传入参数不同

av_realloc:分配起始地址不变,内存扩大

2) 用户定制内存管理

使用MALLOC_PREFIX来控制是否使用自定义的内存管理方式,如果使用自定义的内存管理方式,需要实现以下函数:

#define malloc   AV_JOIN(MALLOC_PREFIX, malloc )

#define memalign AV_JOIN(MALLOC_PREFIX, memalign )

#define posix_memalign AV_JOIN(MALLOC_PREFIX, posix_memalign)

#define realloc AV_JOIN(MALLOC_PREFIX, realloc )

#define free AV_JOIN(MALLOC_PREFIX, free )

 可以通过编译选项来开自定义内存管理方式

--malloc-prefix = PREFIX前缀malloc和PREFIX的相关名称

--custom-allocator = NAME使用受支持的自定义分配器

posted @   追随技术  阅读(538)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示