柔性数组【详解】

什么是柔性数组?

C99规定,在一个结构体类型中,最后一个成员类型名是未定大小的数组,则为柔性数组。

柔性数组的特点是什么?

其一,不占据sizeof()返回结构体类型的大小的内存,

其二,柔性数组前面至少包含一个元素,

其三,用malloc()动态开辟超出结构体类型大小的内存空间,以满足数组预期的的大小,

柔性数组的使用:

可以看出柔性数组基本和动态内存开辟空间近似。

所以上面的有些代码还可以改成,

两者区别就是,用柔性数组开辟的动态空间,在堆区上是连续的。而利用指针开辟的动态空间,与另外几个成员名,是不连续的。 就算结构体变量也在堆区上开辟,那由malloc的脾气,在堆区任意开辟一片足够的空间,你用malloc开辟两次空间,那肯定不连续。

那柔性数组的优势是什么? 

1.方便空间的释放,释放空间只需free一次

2.空间利用率高,开辟空间只需开辟一次

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值