当前位置: 首页 > news >正文

免费文案素材网站可以分销的平台

免费文案素材网站,可以分销的平台,代理网页游戏代理,珠海门户网站建设价格一、介绍 柔性数组#xff08;Flexible Array#xff09;#xff0c;又称可变长数组。一般数组的长度是在编译时确定#xff0c;而柔性数组对象的长度在运行时确定。在定义结构体时允许创建一个空数组#xff08;例如#xff1a;arr [ 0 ] #xff09;#xff0c;该数…一、介绍 柔性数组Flexible Array又称可变长数组。一般数组的长度是在编译时确定而柔性数组对象的长度在运行时确定。在定义结构体时允许创建一个空数组例如arr [ 0 ]  该数组的大小可在程序运行过程中按照你的需求变动。 struct S {int n;int arr[0]; // 柔性数组成员 };// 有些编译器会报错无法编译可以改成struct S {int n;int arr[]; // 柔性数组成员 }; 柔性数组Flexible Array是在C语言的 C99 标准中引入的新特性。结构中的最后一个元素的大小允许是未知的数组即为柔性数组。 二、柔性数组的特点 结构中的柔性数组成员前面必须至少一个其他成员。 sizeof 返回的这种结构大小不包括柔性数组的内存。 包含柔性数组成员的结构用 malloc () 函数进行内存的动态分配并且分配的内存应该大于结构的大小以适应柔性数组的预期大小。 #include stdio.hstruct S {int n; //4int arr[0]; //大小是未知的 }s;int main(){printf(%d\n, sizeof(s)); //4struct S* ps (struct S*)malloc(sizeof(struct S) sizeof(int)); // 后面的大小就是给柔性数组准备的return 0; } 因为这段空间是 malloc 出来的所以后面 arr 的空间如果不够可以进行调整。它的大小是可以改变的这里就体现出了 “柔性” 的意义。 三、柔性数组的使用 // 代码一 #include stdio.h #include stdlib.hstruct S {int n;int arr[0]; };int main() {struct S* ps (struct S*)malloc(sizeof(struct S) sizeof(int));ps-n 10;for (int i 0; i 10; i){ps-arr[i] i;}struct S* ptr (struct S*)realloc(ps, sizeof(struct S) 20*sizeof(int));if (ptr ! NULL){ps ptr;}free(ps);ps NULL;return 0; } 这样柔性数组成员  arr 相当于获得了  10  个整型元素的连续空间。 四、柔性数组的优势 // 代码二 #include stdio.h #include stdlib.hstruct S {int n;int* arr; };int main() {struct S* ps (struct S*)malloc(sizeof(struct S));if (ps NULL){return 1;}ps-n 10;ps-arr (int*)malloc(10 * sizeof(int));if (ps-arr NULL){return 1;}for (int i 0; i 10; i){ps-arr[i];}int* ptr (struct S*)realloc(ps-arr, 20 * sizeof(int));if (ptr ! NULL){ps-arr ptr;}// 这里需要回收2个空间且回收必须有先后free(ps-arr); // 先free第二块空间ps-arr NULL;free(ps);ps NULL;return 0; } 上述 代码一 和 代码二 可以完成同样的功能但是代码一 的实现有两个好处 第一个好处是方便内存释放。 虽然 代码二实现了相应的功能但是和 代码一相比还是有很多不足之处的。 代码二使用指针完成 进行了两次 malloc 而两次 malloc 对应了两次 free 相比于 代码一更容易出错。 如果我们的代码是在一个给别人用的函数中你在里面做了两次内存分配并把整个结构体返回给用户。虽然用户调用 free 可以释放结构体但是用户并不知道这个结构体内的成员也需要 free所以你不能指望用户来发现这件事。所以如果我们把结构体的内存以及其成员要的内存一次性分配好而不是多次分配并且返回给用户一个结构体指针 用户只需使用一次 free 就可以把所有的内存都给释放掉可以间接地减少内存泄露的可能性。 第二个好处是这样有利于访问速度。         连续内存多多少少有益于提高访问速度还能减少内存碎片。malloc 的次数越多产生的内存碎片就越多这些内存碎片不大不小再次被利用的可能性很低。内存碎片越多内存的利用率就会降低。频繁的开辟空间效率会变低碎片也会增加。
http://www.w-s-a.com/news/379757/

相关文章:

  • 南阳哪有做网站公司定制网站本地企业
  • 平板上做网站的软件邀约网站怎么做请柬
  • 企业网站成品源码邯郸做网站流程
  • 建设网站需要什么技术两个网站放在同一个服务器 备案
  • 焦作做网站推广天津网络关键词排名
  • siteserver cms网站访问量挂机宝可以做网站吗
  • 普宁网站建设公司网络商城设计
  • wordpress主题 外贸网站wordpress安装后输入帐号登不进去
  • 陕西省西安市建设局网站永登网站设计与建设
  • 广东网站设计招工.免费咨询贷款
  • 做试题网站在线做c 题的网站
  • 青岛发现51例阳性南京专业网站优化公司
  • 南昌建站如何上wordpress
  • 洛阳网站建设优惠公司建筑企业上市公司有哪些
  • 营销型网站建设营销型网站建设手机网站设计需要学什么
  • 在线视频网站 一级做爰片南通网站建设找哪家
  • 网站优化文章东莞专业网站建设价钱
  • 哈尔滨网页设计网站模板泰兴建设局网站
  • 响应式网站设计公司报纸做垂直门户网站
  • 陕西旭泽建设有限公司网站企业网站建设软件需求分析
  • 上海公司网站建设方案中企动力西安分公司
  • dedecms网站后台怎样才能上百度
  • 云互联的网站名字亚马逊雨林生物
  • 电商网站功能企查查企业信息查询网
  • 特色网站建设中国住房和城乡建设局官网
  • 长春市住房城乡建设厅网站做白酒网站
  • 自己的网站怎么做的成品免费ppt网站
  • 番禺区网站建设哪里有泰安公司
  • 网站制作详细过程网站开发最强工具
  • 孟村县做网站长春城投建设投资有限公司网站