欢迎光临散文网 会员登陆 & 注册

C语言内存管理

2022-05-14 14:53 作者:信盈达  | 我要投稿

一:相关动态内存函数

(1)malloc和free

free用于释放mallco开辟的空间,malloc和free要成对使用,开辟的空间如果不使用了,一定要将其free掉,如果不free掉,堆区空间会越挤越大的(除非程序直接结束)。

同时当那个指针所指空间free掉之后,由于指针其实还是已经保存了那片空间的地址,这个行为是相当危险的,因为找到指针就有可能会改变它,所以为了彻底断绝他们的联系,在free掉之后,要将指针置为NULL。

(2)calloc

calloc函数和malloc函数的作用相同,都是用来动态开辟的。calloc与malloc所不同的是地方是两者参数格式不一样,并且calloc在开辟的同时会将此空间初始化为0, 而malloc则为随机值。

  • malloc情况

calloc语法格式为:

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


(3)realloc

在申请好空间后,如果发现申请的空间不合适,过大或者过小,就可以使用realloc来进行调整

比如下面的例子中申请了20个字节后发现空间不够,然后重新调整

需要注意:realloc申请空间有两种方式


在堆区重新调整空间必然会遇到两种情况:

第一种原有的空间后面有足够大的空间,那么申请时相当于就在原有空间后面补上缺的部分,这样其返回的仍然是原来空间的地址;

第二种原有的空间后面不够大,realloc会重新找一片能完整存放的区域,然后把之前的内容照搬赋值过来,并释放先前空间


版权声明:本文为CSDN博主「快乐江湖」的原创文章。如有侵权,请联系删除。

原文链接:【C语言重点难点精讲】C语言内存管理_快乐江湖的博客-CSDN博客_c语言 内存管理

C语言内存管理的评论 (共 条)

分享到微博请遵守国家法律