FFmpegにおけるav_free()とav_freep()の違いは何ですか。

FFmpeg内では、av_free()とav_freep()はどちらもメモリを解放するために使用されますが、いくつかの違いがあります。

  1. 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()は、ポインタをNULLに設定してメモリを解放します。av_free()とは異なり、ポインタへのポインタを渡す必要がなく、ポインタを直接入力パラメータとして受け付けます。

使用例:

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

結論:
指向指標的指標時,可使用av_freep()釋放記憶體。反之,可使用av_free()釋放記憶體並將指標設置為NULL。

bannerAds