av_realloc

原文链接:https://blog.csdn.net/ice_ly000/article/details/90510504
av_realloc() 声明:

所属库:libavutil(lavu),该库是ffmpeg的功能库,当前函数属于内存管理功能
头文件:libavutil/mem.h
功能:1. 分配空间 / 重新分配空间(已分配空间的伸缩) / 释放一块内存。
1)ptr为NULL,且size>0时,分配一块新的内存块;
2)ptr不为空,size=0时,释放ptr指向的内存空间;
3) ptr不为空,size>0时,扩展ptr指向的内存空间;
4)ptr不为空,size<0时,收缩ptr指向的内存块空间;
2. 注意一点就是av_malloc()保证内存对齐,而本函数不保证内存对齐

/**
* 分配、重新分配或释放一块内存。
  *
  * 如果 `ptr` 为 `NULL` 且 `size` > 0,则分配一个新块。 如果 `size` 是
  * 零,释放`ptr`指向的内存块。 否则,展开或
  * 根据 `size` 缩小内存块。
  *
  * @param ptr 指向已分配的内存块的指针
  * av_realloc() 或 `NULL`
  * @param size 要分配的内存块的字节大小或
  * 重新分配
  *
  * @return 指向新分配块的指针,如果块为“NULL”
  * 不能重新分配或该函数用于释放内存块
  *
  * @warning 与 av_malloc() 不同,不保证返回的指针是
  * 正确对齐。
  * @see av_fast_realloc()
  * @见av_reallocp()
 */
void *av_realloc(void *ptr, size_t size) av_alloc_size(2);

av_realloc() 源码:

void *av_realloc(void *ptr, size_t size)
{
    /* let's disallow possibly ambiguous cases */
    if (size > (max_alloc_size - 32))
        return NULL;
 
#if HAVE_ALIGNED_MALLOC
    return _aligned_realloc(ptr, size + !size, ALIGN);
#else
    return realloc(ptr, size + !size);
#endif
}

av_realloc() 实现利用的是c库realloc()和_aligned_realloc(),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值