动态内存管理技术是什么意思,动态内存管理器

  动态内存管理技术是什么意思,动态内存管理器

  Yyds干货库存

  前言在上一篇博客里,我更新了通讯录动态内存的升级版,里面涉及到一些关于动态内存的知识。没学过的可以看这里!

  在介绍动态内存之前,我们需要了解一些内存知识。我们通过一张图来简单了解一下。

  相对于动态记忆这个模糊的概念,其实顾名思义,动态记忆是可变的。

  malloc函数需要引用头文件#include stdlib.h,malloc函数打开的空间是动态的。代码演示了10个int类型的空间,也就是40个字节,应用到内存中,应用的空间放在指针p中,因为malloc是void类型,所以需要强制类型转换。P=(int *) malloc (10 * sizeof (int)),这是一种标准的写法。需要n * sizeof (type)才能打开空间。我们每次动态申请空间都要判断申请成功与否,因为动态内存并不是100%保证成功的。如果应用成功,我们将编写一个输出代码并打印0-9。当时用完动态内存后,我不得不使用free函数来释放应用的动态内存,并将其返回给操作系统。如果我不释放内存,随着时间的推移,内存会阻塞free(p);p==NULL将P赋值为空指针,防止P接触这个空间,成为干扰其他代码运行的通配符指针。

  #包含stdlib.h

  #包含错误号h

  int main()

  {

  int * p=(int *)malloc(10 * sizeof(int));//申请内存中10个整数类型的空间,并且(int*)是强制类型转换,因为malloc是(void*)类型

  If (p==NULL)//应用程序失败,并返回一个空指针。

  {

  printf(%s\n ,strerror(errno));//打印错误代码

  }

  否则//申请成功,空间正常使用。

  {

  int I=0;

  for(I=0;i 10我)

  {

  *(p I)=I;

  }

  for(I=0;i 10我)

  {

  printf(%d ,*(p I));

  }

  }

  //当不再使用动态应用的空间时

  //应该返回给操作系统

  免费(p);

  p=NULL//现在空间被释放了,主动给P赋一个空指针,防止P再接触这个空间。

  返回0;

  }

  Calloc函数calloc和malloc函数的用法几乎一样,差别不大(10,sizeof(int))。请注意,还有一个不同之处。calloc应用的space会将space的元素值初始化为0,用来满足不同程序的需要。打印出来可以看看。注意腾出空间。

  #包含stdlib.h

  #包含错误号h

  int main()

  {

  int* p=(int*)calloc(10,sizeof(int));

  if (p==NULL)

  {

  printf(%s\n ,strerror(errno));

  }

  其他

  {

  int I=0;

  for(I=0;i 10我)

  {

  printf(%d ,*(p I));

  }

  }

  免费(p);//释放空间

  p=NULL

  返回0;

  }

  realloc函数可能在这里,大家还是一脸懵,想着怎么让空间变变量。好了,来了!他来了!她在往前走!他是realloc函数。前面的malloc和calloc函数都是动态创建的,但是要想让空间真正变大或变小,必须使用realloc函数。它的功能是调整动态创建的内存空间的大小。我们还是用malloc动态创建一个20字节的空间,然后把0到4的数字打印出来,但是我后悔了。我想打印从0到9的数字。但是缺少20字节的空间,所以使用realloc函数,int* ptr=realloc(p,40)。这是标准的书写方式,这里的40开辟了额外的20字节空间。

  #包含stdlib.h

  #包含错误号h

  int main()

  {

  int * p=(int *)malloc(20);//打开20个字节

  if(p==NULL)

  {

  printf(%s\n ,strerror(errno));

  }

  其他

  {

  int I=0;

  for(I=0;i5;我)

  {

  *(p I)=I;

  }

  }

  int* ptr=realloc(p,40);

  如果(ptr!=空)

  {

  p=ptr

  int I=0;

  for(I=5;i 10我)

  {

  *(p I)=I;

  }

  for(I=0;i 10我)

  {

  printf(%d ,*(p I));

  }

  }

  免费(p);//释放内存

  p==NULL

  返回0;

  }这里只是malloc打开的20字节空间。假设这里的20字节不能满足我们的需求,但是我们希望能够使用40字节的空间。下面介绍如何使用realloc来调整动态打开的内存。realloc的说明:1。如果P指向的空间后有足够的内存空间,直接追加,返回p2。没有足够的内存空间,那么realloc会重新开辟一个满足需求的新内存空间,并将原来空间中的数据复制回来,释放旧内存空间,最后返回新开辟内存空间的地址。3.用一个新的变量ptr来接受realloc函数的返回值(防止P指向的空间因为开放空间不足而丢失)。

  free函数free与malloc、calloc和realloc函数一起使用,释放动态打开的空间。

  ,转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: