FFmpegにおけるav_free()とav_freep()の違いは何ですか。
FFmpeg内では、av_free()とav_freep()はどちらもメモリを解放するために使用されますが、いくつかの違いがあります。
- av_free()は、av_malloc()、av_mallocz()、av_calloc()、またはav_realloc()で割り当てられたメモリを解放するための関数です。入力パラメータとして解放するメモリブロックへのポインタを取り、そのポインタをNULLに設定して、解放されたメモリの誤使用を防ぎます。
使用例:
uint8_t* buffer = av_malloc(1024);
...
av_free(buffer);
buffer = NULL;
- av_freep()は、ポインタをNULLに設定してメモリを解放します。av_free()とは異なり、ポインタへのポインタを渡す必要がなく、ポインタを直接入力パラメータとして受け付けます。
使用例:
uint8_t* buffer = av_malloc(1024);
...
av_freep(&buffer);
結論:
指向指標的指標時,可使用av_freep()釋放記憶體。反之,可使用av_free()釋放記憶體並將指標設置為NULL。