C语言动态内存学习笔记

一、malloc返回参数有两种情况
1,当分配的内存池是空的时候返回一个NULL指针。
2,当可用内存无法满足要求,malloc向操作系统请求,要求更多内存,如果它无法向malloc提供更多内存就返回一个NULL指针
二、free的参数
free的参数必须是NULL或malloc,calloc,realloc返回的值,向free传递一个NULL参数不会产生任何效果。
三、calloc与realloc的区别

void *calloc(unsigned int num,unsigned int size);
void realloc(void *ptr,unsigned int new_size);

1,calloc在返回指向内存的指针之前把他初始化位0。(malloc在声明内存块的时候并没有初始化)calloc的参数包括所有元素的个数与每个元素的字节数,根据这些值自动计算出所需分配的内存。
2,realloc用于修改一个原来已经分配好的内存块大小。它可以重新改变内存块的大小,在改变之后原来的内存块仍然保留,新增的内存增加在原来内存快的后面,新内存并没用进行初始化。缩小内存块的尾部被去掉,剩余的值仍然保留。
注: 如果原来的内存无法改变大小,realloc会重新分配一块正确大小的内存,并且原来的那块内存将被复制在新的代码块。因此,使用realoc后,不能使用原来的指向内存的指针,而是用realloc返回的新指针!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值