FFmpeg中的av_free()和av_freep()区别

2024-01-04

在FFmpeg中,av_free()和av_freep()都用于释放内存,但是有一些区别。

  1. av_free(): av_free()函数用于释放由av_malloc()、av_mallocz()、av_calloc()或av_realloc()分配的内存。它采用一个指向要释放的内存块的指针作为输入参数,并将该指针设置为NULL,以防止对已释放的内存进行误用。

示例用法:

uint8_t* buffer = av_malloc(1024);
...
av_free(buffer);
buffer = NULL;
  1. av_freep(): av_freep()函数通过将指针设置为NULL来释放内存。与av_free()不同,它不需要传递指向指针的指针,而是直接接受指针作为输入参数。

示例用法:

uint8_t* buffer = av_malloc(1024);
...
av_freep(&buffer);

总结:
当你有一个指向指针的指针时,你可以使用av_freep()函数来释放内存。否则,你可以使用av_free()函数来释放内存,并将指针设置为NULL。