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

avatar
作者
猴君
阅读量:8

在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。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!