C语言内存管理
一:相关动态内存函数
(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语言 内存管理