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

互联网电商网站建设旅行网站开发需求说明书

互联网电商网站建设,旅行网站开发需求说明书,杭州互联网企业排名,重庆市建设工程造价管理协会官网这里写目录标题 动态内存分配的原因动态内存函数mallocfreecallocrealloc C/C内存开辟柔性数组柔性数组特点 动态内存分配的原因 常见的内存开辟方式#xff1a; int a 10;//在栈空间上开辟4个字节 char arr[10] {0};//在栈空间上开辟连续的10个字节上述开辟的空间问题内存开辟柔性数组柔性数组特点 动态内存分配的原因 常见的内存开辟方式 int a 10;//在栈空间上开辟4个字节 char arr[10] {0};//在栈空间上开辟连续的10个字节上述开辟的空间问题 1.空间开辟大小是固定的。 2. 数组在申明的时候必须指定数组的长度它所需要的内存在编译时分配 但有时需要程序运行时才知道空间大小所以需要动态内存开辟 动态内存函数 malloc void* malloc (size_t size); 该函数向内存申请一块连续可用的空间并返回指向这块空间的指针 如果开辟成功则返回一个指向开辟好空间的指针如果开辟失败则返回一个NULL指针因此malloc的返回值一定要做检查返回值的类型是 void*所以malloc函数并不知道开辟空间的类型具体在使用的时使用者自己来决定如果参数 size 为0malloc的行为是标准是未定义的取决于编译器 free void free (void* ptr); free函数用来释放动态开辟的内存 如果参数 ptr 指向的空间不是动态开辟的那free函数的行为是未定义的如果参数 ptr是NULL指针则函数什么事都不做 calloc void* calloc (size_t num, size_t size); 函数的功能是为 num 个大小为 size 的元素开辟一块空间并且把空间的每个字节初始化为0与函数 malloc的区别只在于 calloc会在返回地址之前把申请的空间的每个字节初始化为全0 realloc void* realloc (void* ptr, size_t size); realloc函数就可以做到对动态开辟内存大小的调整size的大小是总的大小比如已经用malloc开辟了40个字节的空间size60就是开辟4020个字节的空间 ptr是要调整的内存地址size 调整之后新大小返回值为调整之后的内存起始位置函数调整原内存空间大小的基础上还会将原来内存中的数据移动到新的空间realloc在调整内存空间的是存在两种情况 情况1原有空间之后有足够大的空间情况2原有空间之后没有足够大的空间 情况1 当是情况1 的时候要扩展内存就直接原有内存之后直接追加空间原来空间的数据不发生变化 情况2 当是情况2 的时候原有空间之后没有足够多的空间时扩展的方法是在堆空间上另找一个合适大小的连续空间来使用。这样函数返回的是一个新的内存地址 C/C内存开辟 C/C程序内存分配的几个区域 1.栈区(stack):在执行函数时函数内局部变量的存储单元都可以在栈上创建函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中效率很高但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等2.堆区(heap):一般由程序员分配释放若程序员不释放程序结束时可能由OS回收分配方式类似于链表3.数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放4.代码段:存放函数体(类成员函数和全局函数)的二进制代码。 柔性数组 柔性数组flexible arrayC99 中结构中的最后一个元素允许是未知大小的数组这就叫做『柔性数组』成员 typedef struct st_type { int i; int a[0];//柔性数组成员 }type_a;柔性数组特点 结构中的柔性数组成员前面必须至少一个其他成员sizeof 返回的这种结构大小不包括柔性数组的内存包含柔性数组成员的结构用malloc(0函数进行内存的动态分配并且分配的内存应该大于结构的大小以适应柔性数组的预期大小 柔性数组好处 方便内存释放有利于访问提升速度 #include stdio.h #include stdlib.hstruct S {int n;int arr[0];//柔性数组 };int main() {printf(%d\n, sizeof(struct S));//4struct S* s (struct S*)malloc(sizeof(struct S) 40);//440if (s NULL){perror(s);return 1;}s-n 100;int i 0;for (i 0; i 10; i){s-arr[i] i;}//扩容struct S* ptr (struct S*)realloc(s, sizeof(struct S) 40 20);if (ptr NULL){perror(ptr);return 1;}s ptr;s-n 15;printf(%d\n, s-n);for (i 0; i 15; i){printf(%d , s-arr[i]);}//释放free(s);s NULL;return 0; }
http://www.w-s-a.com/news/139310/

相关文章:

  • 常州做网站的 武进学雷锋_做美德少年网站
  • 怎样建网站赚钱贵州seo和网络推广
  • 创建网站的工具站内seo优化
  • 网站特效 站长查询网网站
  • 百度移动端网站网站建设设计思想
  • 青岛建设官方网站南宁制作企业网站
  • 校园网站建设管理工作制度大网站开发费用
  • 做logo赚钱的网站分类网站 模板
  • 网站建设完成报告织梦网站怎么做备份
  • 邯郸市城乡建设管理局网站vimwiki wordpress
  • 如何修改wordpress站名如何制作公司网站
  • 宁波网站建设与推广方案网站有了备案号之后能做什么
  • 汕头手机端建站模板pinterest app下载
  • 网站主机免费宁波网站建设优化诊断
  • 吧网站做软件的软件下载简单的ui界面制作
  • 陕西网站制作公司网页制作与设计代码
  • 做网站行情郑州微信网站开发
  • 河间网站建设制作null wordpress theme
  • h5网站制作网站开发网站建设文翻译工作
  • 网站建设 税种秦皇岛哪有网站优化公司
  • 专业开发网站设计找人做网页需要多少钱
  • 手机购物网站 建站网站建设网站制作网站设计
  • 基于iview的网站开发模板小程序制作需要什么语言
  • 精美网站设计保定建行网站首页登录
  • 网站建设常见问题做网站保存什么格式最好
  • 营销型网站建设与网页设计网站建设 amp 找VX cp5173
  • 新网站该如何做网站优化呢儿童手工
  • 湖北现代城市建设集团网站搜索引擎优化的作用
  • 上海做网站吧开一家软件开发公司需要什么
  • 阿里巴巴网站建设改图片建设厅官方网站河南