当前位置:网站首页>【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。如果觉得这篇文章有什么帮助的话,点点点。谢谢大家的支持,你的支持就是我前进的动力!!!
边栏推荐
猜你喜欢
Biotin hydrazide HCl|CAS:66640-86-6|Biotin-hydrazide hydrochloride
etcd实现大规模服务治理应用实战
如何将项目部署到服务器上(全套教程)
如何建立私域流量?私域流量对企业有什么好处?
BGP solves routing black hole through MPLS
18、优化网站性能
牛客2022 暑期多校4 D Jobs (Easy Version)(递推优化策略)
HCIP第二天
Biotin-EDA|CAS:111790-37-5| Ethylenediamine biotin
[ansible]playbook结合项目解释执行步骤
随机推荐
The crawler video crawl tools you get
EPSANet: An Efficient Pyramid Split Attention Block on Convolutional Neural Network
优炫数据库的逻辑复制怎么样?
【开源项目】X-TRACK源码分析
Seleniu截图代码以及给图片赋值名字
Biotin hydrazide HCl|CAS:66640-86-6|生物素-酰肼盐酸盐
MySQL优化之慢日志查询
HCIP第一天
HCIP第七天
IO进程线程->进程->day4
Flink 监控指南 被动拉取 Rest API
flutter 自己写一个组件
[OC学习笔记]ARC与引用计数
Ansible 学习总结(11)—— task 并行执行之 forks 与 serial 参数详解
基于PyTorch的flappy bird游戏
QT web development - Notes - 3
BGP solves routing black hole through MPLS
.NET静态代码织入——肉夹馍(Rougamo) 发布1.1.0
Technology Cloud Report: To realize the metaverse, NVIDIA starts from building an infrastructure platform
prometheus monitoring mysql_galera cluster