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使用受支持的自定义分配器
本文来自博客园,作者:追随技术,转载请注明原文链接:https://www.cnblogs.com/545235abc/p/15842690.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)