C语言中结构的用法

C语言中结构的用法,第1张

概述我正在阅读关于malloc(first-fit)实现的脚本,我对元数据结构的值赋值有点困惑.任何人都可以解释为什么malloc返回flag_block-> ptr(作为指向已分配内存的指针)?据我所知,没有具体的任务. typedef struct _metadata { size_t size; char free; struct _metadata* next; 我正在阅读关于malloc(first-fit)实现的脚本,我对元数据结构的值赋值有点困惑.任何人都可以解释为什么malloc返回flag_block-> ptr(作为指向已分配内存的指针)?据我所知,没有具体的任务.
typedef struct _Metadata {    size_t size;    char free;    struct _Metadata* next;    struct _Metadata* prev;    char ptr[];} Metadata;Metadata* flag_block = NulL; voID *malloc(size_t size){    if (size==0) {        return NulL;    }    if (flag_block == NulL) {        flag_block = sbrk(size);        sbrk(sizeof(Metadata));        if (flag_block == (voID *)-1) {            return NulL;        }        flag_block->free = 0;        flag_block->next=NulL;        flag_block->prev=NulL;        flag_block->size = size;        return flag_block->ptr;    } else {    /*         ....    */    }}
解决方法 ptr被称为灵活的阵列成员;它是一个没有大小的数组,只能出现在结构的末尾.

基本上这个:

return flag_block->ptr;

相当于

return &flag_block->ptr[0];

所以它返回结构中其余成员之后的第一个字节的地址.

总结

以上是内存溢出为你收集整理的C语言中结构的用法全部内容,希望文章能够帮你解决C语言中结构的用法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1239178.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存