阅读量:8
在FFmpeg中,av_free()和av_freep()都用于释放内存,但是有一些区别。
- av_free(): av_free()函数用于释放由av_malloc()、av_mallocz()、av_calloc()或av_realloc()分配的内存。它采用一个指向要释放的内存块的指针作为输入参数,并将该指针设置为NULL,以防止对已释放的内存进行误用。
示例用法:
uint8_t* buffer = av_malloc(1024); ... av_free(buffer); buffer = NULL;
- av_freep(): av_freep()函数通过将指针设置为NULL来释放内存。与av_free()不同,它不需要传递指向指针的指针,而是直接接受指针作为输入参数。
示例用法:
uint8_t* buffer = av_malloc(1024); ... av_freep(&buffer);
总结: 当你有一个指向指针的指针时,你可以使用av_freep()函数来释放内存。否则,你可以使用av_free()函数来释放内存,并将指针设置为NULL。