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

品牌展示设计网站优质专业建设申报网站

品牌展示设计网站,优质专业建设申报网站,合肥做网站哪家好,广告公司简介介绍引言#xff1a;随着大一期末的到来#xff0c;想必许多学生都学到内存的动态管理这一部分了#xff0c;看望这篇博客后#xff0c;希望能解除你心中对这一章节的疑惑。 (・∀・(・∀・(・∀・*) 1.malloc详解 malloc的头文件是#include sdtlib.h,malloc - C Ref… 引言随着大一期末的到来想必许多学生都学到内存的动态管理这一部分了看望这篇博客后希望能解除你心中对这一章节的疑惑。 (・∀・(・∀・(・∀・*) 1.malloc详解 malloc的头文件是#include sdtlib.h,malloc - C Reference (cplusplus.com) 我们可以点进看看的malloc的详细内容 可以看到malloc返回值是void*类型也就是说明在使用时我们还需要根据需要开辟空间的类型强制类型转换成自己所要的类型。例如我们要开辟40个字节的空间代码如下。 #include stdlib.h int main() {int* pa (int *) malloc(10 * sizeof(int));return 0; } 用数组的来写如下 同样也可以实现空间的开辟这里我们就来谈谈相同点与不同点。 #include stdio.h int main() {int pa[10];return 0; } 相同点 向内存申请一块空间在程序结束时释放 不同点 申请的内存位置不同malloc在堆区数组在栈区。头文件不同malloc头文件是stdlib.h数组头文件是stdio.h空间动态性malloc所申请的空间是可变的动态的可以通过使用realloc(下面会再讲解realloc的用法)来改变大小数组所申请的空间是不可变的定义完后就固定了。数组定义时可以初始化空间内容malloc申请空间时不能初始化内容且其空间里的内容是随机值。malloc申请空间可能失败数组不会。 如何理解这些不同点以及如何配套使用malloc我们看下面这一段代码 #include stdlib.h int main() {int* pa (int *)malloc(10 * sizeof(int));if (pa NULL){perror(malloc:);return 1;}int i 0;for (i 0; i 10; i){*(pai) i;printf(%d , *(pai));}free(pa);pa NULL;return 0; }我们可以看到用malloc申请完空间后我们接着写了一段代码判断pa是否为NULL 我们接上不同点5malloc申请空间可能会失败。所以我们要分类讨论malloc申请空间的情况 1.失败返回NULL空指针。 2.成功返回申请到空间的首地址。 至于perror是一种打印申请空间失败原因的库函数我们可写可不写为了可读性最好加上接着如果失败我们return 1结束程序。因为以及申请失败了下面的代码是针对成功的情况如果不结束程序代码就会出错。 for循环将0到9输入到这片空间中并打印到屏幕中 最后使用完了这块空间我们free释放掉(free是编译器里的库函数用来释放某一块空间的还回去。释放完后free函数并不会将pa置为NULL为了防止野指针的出现我们需要手动设为NULL. 2.calloc详解 calloc和malloc很类似也是申请一块空间我们接着看。 calloc的头文件是#include sdtlib.hcalloc - C Reference (cplusplus.com) 我们可以点进看看的calloc的详细内容 同样我们可以看到calloc的返回值是void*但calloc函数比malloc多了一个参数。我们具体分析 具体了解calloc。我们比较calloc与malloc 相同点 1.都是向堆区申请一块空间。 2.都是动态的可变的。 3.成功返回这块空间的首地址失败返回NULL。 4.函数返回值都是void*。 不同点 1.申请的空间成功时可以初始化为0而malloc不可以。 至于不同点我们看代码 ​ ​ #include stdlib.h int main() {int* pa (int *)calloc(10 , sizeof(int));if (pa NULL){perror(calloc:);return 1;}int i 0;for (i 0; i 10; i){printf(%d , *(pai));}free(pa);pa NULL;return 0; }​​ 我们没有给calloc申请的空间赋值我们看结果是 申请空间后初始化为0。 3.realloc详解 realloc的头文件是#include sdtlib.hrealloc - C Reference (cplusplus.com) 我们可以点进看看的calloc的详细内容 看功能realloc是来调整malloc/calooc申请的空间。与数组的不同就体现在这。 具体分析realloc的两个参数 具体我们看代码操作   ​ #include stdlib.h int main() {int* pa (int*)malloc(5 * sizeof(int));if (pa NULL){perror(mallco:);return -1;}for (int i 0; i 5; i){*(pa i) i;//pa需要i指向下一个位置。printf(%d , *(pa i));}int* pb (int*)realloc(pa, 10 * sizeof(int));if (pb NULL){pb pa;free(pb);pb NULL;perror(realloc:);return 1;}elsepa pb;for (int i 5; i 10; i){*(pa i) i;//pa需要i指向下一个位置。printf(%d , *(pa i));}free(pa);pa NULL;return 0; }​ 代码上半部分用malloc申请一块空间后我们觉得20字节大小不够我们就使用realloc函数增大空间至40个字节大小。同样申请完后我们要判断申请是否成功。 这里realloc比较复杂。我们一一述说 1.失败返回NULL。 2.成功有分为两种情况 在申请时太大占用了其它已经占用空间时realloc会在内存的堆区重新找一个满足条件的空间同时把旧的数据copy到新的空间接着释放旧空间同时返回新空间的起始地址。在申请时空间够用时返回起始地址。 所以如果pbNULL时申请失败我们需要把之前malloc申请的空间释放掉。并置为NULL。 总结malloc,calloc,realloc三者都是void*类型函数接收返回值时都要强制类型转换。在堆上申请的空间要即使释放并置为空指针。每次申请完后要判断申请是否成功等等。 以上希望能够帮到你让你对动态内存管理有跟深的理解。
http://www.sadfv.cn/news/32621/

相关文章:

  • 水利建设工程网站什么叫社交电商平台
  • 免费 个人 网站成都网站制
  • php 企业网站模板玉林市建设工程交易中心网站
  • 泉州四方网站开发开发公司名称起名大全
  • 百度sem代运营沈阳网站优化哪家好
  • 东莞做网站推广公司怎么制作个人作品网站
  • 网站中的关键词seo设置长沙楼盘信息官网
  • 手机网站开发专业做IT的会做网站吗
  • 网站建设所需费用明细wordpress点击文章不能进入
  • 简约网站程序正规外贸流程
  • 织梦网站关键词手机网站端域名怎样做解析
  • 怎么编辑网站后台网页游戏排行榜前十名大型网络游戏
  • 渭南哪家公司可以做网站网页开发界面设计
  • 网站开发 重庆数据分析师课程
  • 门户网站建设哪家好咸阳网站建设费用
  • 巴南市政建设网站icp是什么
  • 中国建设银行金华分行网站网络搜索优化
  • 国外建站工具创意产品
  • 如何建立自己的网站教程wordpress 调用链接
  • 网站制作教学陕西建筑招聘网
  • 新绛做网站企业名称怎么取名
  • 页制作与网站建设技术大全电话销售网站建设多少钱一个月
  • 怎么接网站开发外包网站开发培训多少钱
  • 英文网站建设怎么样帮人推广注册app的平台
  • 网站建设规划大纲仿网站建设教程视频教程
  • 做传奇网站怎么弄的教育网站如何做seo
  • 视频在线网站免费观看自己优化网站
  • 网站图片怎么做优化上海房产网二手房出售信息
  • 四川省建设人才网站2018wordpress点注册后一直不出来
  • 职友集 一家做公司点评的网站百度快速收录在线提交工具