当前位置:网站首页>【C】关于柔性数组.简要的谈谈柔性数组
【C】关于柔性数组.简要的谈谈柔性数组
2022-08-02 07:59:00 【猪皮兄弟】
🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸

今天带来的内容是柔性数组。
什么是柔性数组
结构体中,最后一个元素允许是未知大小的数组,这就叫做【柔性数组】成员
struct S
{
int num;
double d;
int arr[];//柔性数组成员
}
struct S
{
int num;
double d;
int arr[0];//数组写成0,大小也是未知的,也是柔型数组
}
柔性数组的特点
柔性数组特点:
~结构中的柔性数组成员前必须至少有一个其他成员。
~sizeof()返回的这种结构大小不包括柔性数组的内存
柔性数组~包含柔性数组的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构体的大小,以适应柔性数组的预期大小,他们在内存上是连续的。
指针能做到为什么非要用柔性数组呢
用指针也可以做到这种效果,那么为什么会有柔性数组这种方案呢
比如:
struct S1
{
int num;
int arr[];
};
柔性数组,空间上是连续的
struct S2
{
int num;
int *arr;
};
指针来实现,num和arr所指向的空间可能是不连续的
实现上的细节是有差异的,但是也能达到想要的效果
柔性数组的优势
柔性数组的优势:
第一个好处:方便内存释放
柔性数组的方案释放一次,指针方案释放两次
第二个好处:这样有利于访问速度
由于是连续存放的,连续的内存有益于提高访问速度,也有益于减少内存碎片。
cpu先去寄存器拿,拿不到再去缓存里去拿,再拿不到再去内存里去拿
当访问当前数据时,就会把周围的数据加载到寄存器当中去,在内存中存储是连续的话,命中率会高一些
五彩斑斓的一些废话
创作不易,提前感谢各位老铁的一键三连,我会和大家一起进步,拿下offer。如果觉得这篇文章有什么帮助的话,点点点。谢谢大家的支持,你的支持就是我前进的动力!!!
边栏推荐
- 那些年我们踩过的 Flink 坑系列
- MySQL压缩包方式安装,傻瓜式教学
- @Repository详解
- 设置工作模式与环境(中):建造二级引导器
- Kind of weird!Access the destination URL, the host can container but not
- 血气方刚的年轻小伙竟去做家政小哥,是怎样成功逆袭转行的
- 五款优秀免费的在线抠图工具
- The crawler video crawl tools you get
- prometheus monitoring mysql_galera cluster
- Three types of [OC learning notes] Block
猜你喜欢
随机推荐
MySQL之创建表的基本操作
Wang Xuegang - compiled shipment line file
Write a small game in C (three chess)
近期在SLAM建图和定位方面的进展
Button to control the running water light (timer)
爬虫——爬虫初识、requests模块
基本SQL语句(一篇就够了)
自定义table表格
17、生成长图,并上传至服务器
Figure robot software digital twin station oil and gas pipelines, oil and gas transportation control platform
知识点滴 - 为什么一般不用铜锅做菜
静态路由综合实验
[Unity3D] Beginner Encryption Skills (Anti-Cracking)
用户身份标识与账号体系实践
QT web 开发 - 笔记 - 3
原型模式
Spark 系统性学习笔记系列
@RequestBody使用
MySQL压缩包方式安装,傻瓜式教学
The custom table form



![MFC最详细入门教程[转载]](/img/5d/655e75f6b8a547fefe0137a9b11536.png)





