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

浙公网安备 33010602011771号