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

核工业华南建设集团网站wordpress怎么设置侧滑栏

核工业华南建设集团网站,wordpress怎么设置侧滑栏,网站建设费用怎么算,php网页转wordpress1、为什么要有动态内存分配 常规定义出来的变量,它们的大小都是已经规定好的,即在内存中开辟的内存空间都是固定的;且空间大小不可调整,可能会造成内存空间的浪费。 于是C语言引入了动态内存开辟功能,让程序员自己可…

1、为什么要有动态内存分配

常规定义出来的变量,它们的大小都是已经规定好的,即在内存中开辟的内存空间都是固定的;且空间大小不可调整,可能会造成内存空间的浪费。

于是C语言引入了动态内存开辟功能,让程序员自己可以申请和释放空间,就比较灵活了。



2、malloc函数与free函数

2.1、动态内存开辟函数malloc

函数格式void* malloc (size_t size)

这里的size是指所要开辟的空间的大小,单位为byte

函数功能:这个函数向堆内存申请一块连续可用的空间,并返回指向这块空间的指针。

注意:
1、如果开辟成功,则返回一个指向所开辟的空间的指针,也就是所开辟的空间的首地址。

2、malloc所开辟的空间是堆空间,与之前所学的栈空间不同,且在仅开辟而未初始化的情况下,新开辟的空间里是随机值

3、如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查

4、返回值的类型是void*,所以malloc函数并不知道自己所开辟的空间的类型,在后续的使用中可以通过类型转换来获得使用者想要类型的指针

5、如果参数size0malloc的行为是C标准中未定义的,取决于编译器。

6、malloc函数在使用前需要包含头文件<stdlib.h>

7、当我们定义一个指针变量p用于接收malloc函数的返回值时,指针变量p是在栈内存中,而p所指向的空间在堆内存,也就是说若在子函数中定义这样的一个指针变量去接收malloc的返回值,若子函数结束时,即指针变量p被回收时,依然没有对所申请的堆空间进行释放,则这片堆空间将得不到释放。



2.2、动态内存释放函数free

函数格式void free (void* ptr)

函数作用free函数用来释放动态开辟的内存。

函数出现的原因:因为在堆空间中开辟的内存空间,在程序运行结束后不会被操作系统回收释放。因为操作系统维护的是栈空间,而堆空间库函数来维护,所以需要用专属的库函数来手动清除堆区中的内存空间,如若不回收释放,则即使程序运行结束,栈区中的已使用的空间依然会被持续占用。

矛盾,后续改正:
在这里插入图片描述

注意
1、如果参数ptr指向的空间不是动态开辟的,那free函数的行为是未定义的。

2、ptr必须是动态开辟的空间的首地址,否则free函数会报错。

3、如果参数ptrNULL指针,则函数什么事都不会做。

4、mallocfree都声明在<stdlib.h>头文件中。

5、free函数只会释放使用函数malloc时所规定大小的内存空间,而通过访问越界等手段使用到的空间并不会被回收释放。

6、free函数只对指向动态内存空间的指针起作用,对其他指针不起作用。

7、free函数仅对动态内存空间的首地址起作用,而对指向动态内存空间中的某一部分的指针不起作用。

8、对同一块堆内存空间多次使用free也是错误的。

9、如若忘记使用free,则会导致内存泄漏,特别容易出现在于子函数中使用动态内存开辟函数,而忘记在子函数中使用free的这种情况。



3、calloc函数和realloc函数

3.1、动态内存空间开辟函数calloc

C语言还提供了calloccalloc这两个函数用来实现动态内存分配。

函数格式void* calloc (size_t num, size_t size)

函数作用:函数的功能是为num个大小为size的元素开辟一块空间,并且把空间的每个字节初始化为0。与函数malloc的区别只在于calloc会在返回地址之前把申请的空间的每个字节初始化为全0

所以如果我们对申请的内存空间的内容要求初始化,那么可以很方便的使用calloc函数来完成任务。



3.2、动态内存空间调整函数realloc

realloc函数的出现让动态内存管理更加灵活。

有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,为了合理的使用内存,我们一定会需要对所申请的内存空间的大小做灵活的调整。那realloc函数就可以做到对动态开辟内存空间大小的调整。

函数格式void* realloc (void* ptr, size_t size)

函数功能ptr是要调整的内存地址,size调整之后新大小,返回值为调整之后的内存空间的起始位置。

注意
1、这个函数在调整原内存空间大小的基础上,还会将原来内存中的数据移动到新的空间。

2、realloc在调整动态内存空间时,存在三种情况:

(1)情况1:原有空间之后有足够大的空间。在此情况下,要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发生变化。
在这里插入图片描述

(2)情况2:原有空间之后没有足够大的空间。在此情况下,原有空间之后没有足够多的空间时,扩展的方法是:在堆空间中另开辟一个满足大小要求的连续空间,接着将原来空间里的数据拷贝一份到新的空间,然后释放旧的空间,最后返回新的内存空间的起始地址。
在这里插入图片描述
(3)情况3:空间调整失败,返回空指针NULL

3、在使用此函数后,一定要对返回值进行验证,验证其是否为空指针

4、realloc不具有类似于calloc函数一样的自动初始化功能,也就是说,通过realloc补充出来的空间,里面在初始化前都是随机数据。

http://www.yayakq.cn/news/456612/

相关文章:

  • 网站404做多大免费网站软件app
  • 网站带app建设有哪些外国网站国内可以登录的
  • wap手机网站代码创意网站建设价格多少
  • 网站开发程序开发主题巴巴WordPress主题后门
  • 网站建设 广西网站内容注意事项
  • 电子商务网站怎么做seowordpress怎么添加友情链接
  • 网站生成app免费网络营销课程建议
  • 雷州市规划建设局网站wordpress自动发文章
  • 网站建设服务器主板1150针福建网站建设网
  • 物联网网站开发公司大连甘井子区地图
  • 网站开发哪个公司好郴州建设工程建设信息网站
  • 网站首页幻灯片尺寸李鸿星电子商务网站建设
  • 网站开发和维护费用网站设计 尺寸
  • 石家庄网站推广公司深圳大促网络科技有限公司
  • 一元购网站建设流程wordpress盈利博客
  • 门户网站的基本特征信息与服务用wordpress主题首页
  • 个人资料网站怎么做查看网站是哪家做的怎么看
  • 视频网站建设应该注意什么上海有哪些做网站的公司
  • 网站建设新手教程视频wordpress 主题页脚
  • 浙江网站建设公司排名3d建站
  • 备案 网站内容网站缩略图存哪里好
  • 做网销的网站课程分销平台
  • 资源网站都是在哪找的久就建筑网
  • 南昌集团网站建设灯塔建设网站
  • 基于php的网站开发流程图wordpress 运行代码
  • 创建一个购物网站免费店铺logo
  • 手机访问网站自动跳转怎么在百度创建网站
  • 做游戏难吗比做网站绘画网站建设
  • 网站建设中的主要功能如何做强一个网站的品牌
  • 网站pc开发上海wordpress好还是dz好