草原码农 2017-07-03 06:08 采纳率: 100%
浏览 1346
已采纳

高手解释一下,c语言方法嵌套问题

#if AV_GCC_VERSION_AT_LEAST(4,3)
#define av_alloc_size(...) attribute((alloc_size(__VA_ARGS__)))
#else
#define av_alloc_size(...)
#endif

/**
Allocate a memory block for an array with av_mallocz(). *
The allocated memory will have size size * nmemb bytes. *
@param nmemb Number of elements
@param size Size of the single element
@return Pointer to the allocated block, or NULL if the block cannot
be allocated *
@see av_mallocz()
@see av_malloc_array() */ av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size) { if (!size || nmemb >= INT_MAX / size) return NULL; return av_mallo
av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size)
{
    if (!size || nmemb >= INT_MAX / size)
        return NULL;
    return av_mallocz(nmemb * size);
}

allocz(nmemb * size); }
帮我解释一下,C语言的方法嵌套的问题。我是C语言新手,今天看代码突然看到此方法,我有点闹不机密了。有可我描述的有问题,但是这个方法很奇怪,方法声明前头还有方法。到底这个函数有没有返回值?

  • 写回答

3条回答 默认 最新

  • 太阳星星 2017-07-06 08:32
    关注

    av_mallocz_array是FFmpeg中的一个典型的分配内存函数,申请nmemb个单个大小为size的内存块,申请生成则返回申请的内存对应地址否则返回NULL,也就是说av_mallocz_array函数返回值是一个指向申请内存的指针,而 av_alloc_size(1, 2)则是FFmpeg中定义的一个宏用来修饰函数返回值,具体实现FFmpeg未给出,个人猜测应该是定义了内存字节对齐等内存具体执行操作等相关吧的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料