c中柔性数组

c99中,结构中最后一个元素允许是未知大小的数组,这就叫柔性数组成员。

柔性数组的特点

1.结构中柔性数组前必须至少有一个其他成员

2.sizeof返回的这种结构大小不包括柔性数组的内存

3.包含柔性数组成员的结构用malloc函数进行动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小

4.柔性数组在结构体中只能存在一个

下面我们来介绍两种使用柔性数组的方法

法1

接下来是法2

法1的好处

1.如果我们的代码是在一个给别人用的函数中,你在里面做了二次内存分配 ,并把整个结构返回给用户,用户调用free可以释放结构体,但是用户并不知道这个结构体内的成员也需要free,所以你不能指望用户来发现这个事。所以,如果我们把结构体的内存以及其成员要的内存一次性分配好,并返回给用户一个结构体指针,用户做一次free就可以把所有也给释放掉。

2.这样有利于提高访问速度

连续的内存有益于提高访问速度,也有益于减少内存碎片。(其实,我个人觉得也没多高,反正你跑不了要用偏移量的加法来寻址)。

那么今天分享就到这里,谢谢大家!!!

相关推荐
wangjialelele4 小时前
git工作原理、个人使用到多人协作开发与git FLOW模型
c语言·c++·git·团队开发·个人开发
君义_noip4 小时前
信息学奥赛一本通 1640:C Looooops
c语言·数论·信息学奥赛·csp-s
iCxhust4 小时前
__acrtused 是什么
c语言·c++·单片机·嵌入式硬件·微机原理
程序员zgh4 小时前
CMake 项目构建工具介绍
c语言·开发语言·c++·编辑器
量子炒饭大师4 小时前
一天一个计算机知识——【编程百度】向上取整
c语言·数据结构·c++·git·github
烛衔溟5 小时前
C语言图论:最短路径算法
c语言·算法·图论·dijkstra·bellman-ford·最短路径
烛衔溟5 小时前
C语言图论:最小生成树算法
c语言·算法·图论·最小生成树·kruskal·prim
喵了meme6 小时前
C语言实战3
c语言·开发语言
AuroraWanderll6 小时前
C++类和对象--访问限定符与封装-类的实例化与对象模型-this指针(二)
c语言·开发语言·数据结构·c++·算法
white-persist6 小时前
网络空间安全核心领域技术架构深度解析
c语言·开发语言·网络·python·安全·网络安全·架构