
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语言中结构的用法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)