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

设计师新手接单网站管理网站模板下载免费下载

设计师新手接单网站,管理网站模板下载免费下载,广东省著名商标在什么网站做,西安app开发前言 在学习数据结构时#xff0c;掌握指针、结构体和动态内存管理是非常关键的#xff0c;它们就像是搭建程序框架和操作内存的工具箱#xff0c;需要熟练掌握才能更加游刃有余地进行编程。 指针和结构体我们已经在之前详细的讲过了#xff0c;今天我将带大家学习动态内存…前言 在学习数据结构时掌握指针、结构体和动态内存管理是非常关键的它们就像是搭建程序框架和操作内存的工具箱需要熟练掌握才能更加游刃有余地进行编程。 指针和结构体我们已经在之前详细的讲过了今天我将带大家学习动态内存管理。 如果还没有学习指针和结构体可以点击下面的连接前去学习。 指针的连接 结构体的连接 文章目录 1,为什么要动态内存分配2,mallocfree3,callocrealloc4,常见的动态内存错误5柔性数组6尾声 1,为什么要动态内存分配 平时我们一般是这样开辟一块内存。 int a 0//开辟四个字节的内存 int arr[10] {0};//开辟四十个字节的内存但是很明显给其开辟的那份空间没法再变大变小了比如我创建了一个十个元素的数组可是我现在向往里面装20个元素显然是办不到的又或是我现在只想往里面装5个元素那剩下五个元素的空间就浪费了。那么这时候就需要用到我们的动态内存分配。 动态内存分配显然内存分配是会变化的。那么它是变化的呢 2,mallocfree 那么我们首先要介绍malloc和free这两个函数。 malloc 这个函数的功能是指定一个所需空间的大小然后就会向内存申请开辟一块连续可用的空间返回给你那片空间的地址。 即参数size就是你所需要开辟空间的大小单位为字节当你执行该函数后他会返回给你一个void类型的指针指针中是你要开辟的那份空间的地址。 注意事项 1如果开辟成功那么就会返回那片空间的地址。 2如果没有开辟成功那么就会返回一个空指针。所以一定要对malloc的返回值进行判定以检查是否开辟成功。 3返回的指针类型是void所以需要对返回类型根据你所需要的类型进行强制类型转换。 4他的头文件时stdlib不要忘记带。 5在堆区开辟内存空间而不是栈区或是静态区 free free是用来释放动态内存开辟的空间的函数。当动态申请的空间不再使用的时候就应该还给操作系统。 注意事项 如果memblock指向的空间不是动态内存开辟的那么free的行为是未定义的. 使用 #includestdio.h#includestdlib.hint main(){char* arr (char*)malloc(11 * sizeof(char));//申请11个字节的空间强制转化为char*类型的指针if (arr NULL)//判断是否开辟成功{printf(内存分配失败);return 1;}for (int i 0; i 10; i){arr[i] i0;}arr[10] \0;printf(arr);free(arr);//释放内存arr NULL;//将arr置为空指针return 0;}3,callocrealloc 接下来我们介绍calloc和realloc这两个函数。 calloc 这个函数可以开辟一个内存中连续的空间并将空间里的每个字节初始化为0第一个参数为元素的个数第二个参数 为每个元素的字节大小函数的返回类型依旧是 void * 类型。 与malloc的主要区别就是他会把申请的空间的每个字节都出初始化为0而malloc则不会。 使用方法与malloc大差不差都要判定是否开辟成功并且在不使用时将其内存释放。 realloc 这个函数的功能是重新分配内存空间调整之前开辟动态内存空间的大小 第一个参数是之前开辟内存块的地址 第二个参数是调整后空间的字节大小函数的返回类型还是void *类型。当我们觉得之前开辟的动态内存空间太大或者是太小我们就可以使用这个函数对其进行调整。 注意事项 如果是将动态内存空间变大的话大致会分为两种情况。 1 这种情况下增大内存空间不会影响到已被占用的空间所以可以直接进行扩大。 2 另找一个新空间的同时原有开辟的内存直接被释放我们不需要考虑内存泄漏的问题。 4,常见的动态内存错误 1对NULL指针的解引用操作 在申请动态内存空间后忘记判定是否开辟成功如果开辟失败会返回空指针对空指针进行解引用操作是非法操作编辑器会报发错误。 2.对动态开辟的内存进行越界访问 #includestdio.h#includestdlib.hint main(){char* arr (char*)malloc(11 * sizeof(char));//申请11个字节的空间强制转化为char*类型的指针if (arr NULL)//判断是否开辟成功{printf(内存分配失败);return 1;}for (int i 0; i 20; i)//会越界访问{arr[i] i0;}free(arr);//释放内存arr NULL;//将arr置为空指针return 0;}3.对非动态开辟的内存free #includestdio.h#includestdlib.hint main(){char a 6;char* arr a;free(arr);arr NULL;return 0;}free函数只能对我们开辟的动态内存进行释放操作。 4.使用free释放动态内存的一部分 #includestdio.h#includestdlib.hint main(){char* arr (char*)malloc(20 * sizeof(char));//申请20个字节的空间强制转化为char*类型的指针if (arr NULL)//判断是否开辟成功{printf(内存分配失败);return 1;}int i 0;while( i 10 ){*arr i0;}free(arr);//此时arr的偏移量为10不是初始的位置arr NULL;return 0;}5.对同一块动态内存多次释放 #includestdio.h#includestdlib.hint main(){char* arr (char*)malloc(20 * sizeof(char));//申请20个字节的空间强制转化为char*类型的指针if (arr NULL)//判断是否开辟成功{printf(内存分配失败);return 1;}for (int i 0; i 20; i){arr[i] i0;}free(arr);free(arr);//释放了两次arr NULL;return 0;}一块内存空间只能释放一次。 6.动态开辟内存忘记释放 忘记释放动态开辟的空间可能会造成内存泄漏。动态开辟的空间一定要记得释放 5柔性数组 请点这里 6尾声 正确地管理动态内存可以提高程序的性能和可靠性避免许多令人头痛的问题。希望本文能够帮助小伙伴们更好地理解动态内存管理。如果觉得博主讲的不错的话请给博主点个赞收个藏支持一下吧~。
http://www.hkea.cn/news/14305856/

相关文章:

  • 平面设计创意网站建设施工企业招标领导小组组长的职责
  • 做家装的网站有哪些seo首页优化
  • 网站推广找新昌品牌网站建设
  • dede 手机网站体育建设网站首页
  • 建筑网站新闻写那些好代做毕设要注册答疑网站
  • 响应式学校网站模板下载科技苑
  • 源码哥网站的模板mysql的网站开发
  • 电影网站盗链怎么做app快速开发框架
  • 淄博网站制作定制技术网站风格设计
  • 在线制作网站公章成都网站建设优秀公司
  • 网站微信建设运维经验分享图网站模板怎么改
  • 晋江网站有什么职业做wordpress文章html页面
  • 品牌网站建设坚持大蝌蚪变装的他wordpress
  • 广东seo网站设计营销工具网站建设需要什么硬件和软件有哪些
  • ie的常用网站wordpress赞赏功能
  • 广西网站运营wordpress调用自定义字段
  • 福建建设工程设计备案网站智慧团建注册志愿者入口
  • 叫别人建个网站多少钱如何在虚拟主机上面搭建wordpress
  • 如何做推广麦当劳的网站wordpress ssl部署
  • 电梯网站建设app开发公司选择指南及误区
  • 做网站需要花多少钱wordpress宠物主题
  • 找方案的网站网站设计合同模板
  • 一些js特效的网站推荐wordpress 忘记管理员
  • 1个人做几个网站的负责人表白网页制作免费网站
  • 服装网站 欣赏装企erp管理系统
  • 品质商城网站建设三亚婚纱摄影 织梦网站源码
  • 织梦网站去除技术支持东莞定制建站网站推广公司
  • 给公司做网站软件商丘seo教程
  • wordpress仿站header专门做团购的网站
  • 临沂网站开发技术员广州设计公司前十名