av_malloc 与 av_free 的函数原型

一、av_malloc 函数

在ffmpeg的源码中mem.c 文件中,发现实际上它调用的还是  ptr = malloc(size),size的值是不能大于max_alloc_size ( INT_MAX) 。

void *av_malloc(size_t size)
{
    void *ptr = NULL;

    if (size > max_alloc_size)
        return NULL;

#if HAVE_POSIX_MEMALIGN
    if (size) //OS X on SDK 10.6 has a broken posix_memalign implementation
    if (posix_memalign(&ptr, ALIGN, size))
        ptr = NULL;
#elif HAVE_ALIGNED_MALLOC
    ptr = _aligned_malloc(size, ALIGN);
#elif HAVE_MEMALIGN

    #ifndef __DJGPP__
        ptr = memalign(ALIGN, size);
    #else
        ptr = memalign(size, ALIGN);
    #endif   
#else
    ptr = malloc(size);
#endif


    if(!ptr && !size) {
        size = 1;
        ptr= av_malloc(1);
    }

#if CONFIG_MEMORY_POISONING
    if (ptr)
        memset(ptr, FF_MEMORY_POISON, size);
#endif

    return ptr;
}

 

二、av_free 函数

在ffmpeg源码中的mem.c文件中,发现实际上它调用的还是  free(ptr);

void av_free(void *ptr)
{
#if HAVE_ALIGNED_MALLOC
    _aligned_free(ptr);
#else
    free(ptr);
#endif
}

 

总结

内存的分配与释放归根结底离不开malloc 与 free函数。

你可能感兴趣的:(FFmpeg)