C语言中动态内存分配

malloc:用于执行动态内存分配
void *malloc(size_t size);//参数类型size_t是一个无符号类型
malloc的参数就是需要分配的内存字节(字符)数,malloc所分配的是一块连续的内存,当操作系统无法向malloc提供更多的内存时,malloc就会返回一个NULL指针,因此对于malloc的返回值一定要做检查,确保它并非是NULL。
free:用于执行动态内存的释放;
void free(void *pointer);
free的参数必须要么是NULL,要么是一个先前从malloc,calloc或者是realloc返回的值。向free传递一个NULL参数不会产生任何的效果。
它们都在头文件stdlib.h中声明,且二者必须搭配使用,若动态内存申请后,未释放,就会造成内存泄漏的问题。
calloc和realloc也是内存分配函数:
void *calloc(size_t num,size_t size);
void realloc(void *ptr,size_t new_size);
calloc在返回指向内存的指针之前把它初始化为0,calloc的参数包括所需元素的数量和每个元素的字节数,根据这个可计算出总共需要分配的内存。
realloc用于修改一个已分配的内存块大小;用它扩大一个内存块时,将新增的内存添加到原先的内存块后面,且原本内存块里的内容保持不变;用它缩小内存块时,后将内存块后面的内存去掉,剩余的内存的内容依旧保留。若内存块的大小无法进行需改,realloc会分配一块大小合适的内存,并将原本内存上的内容复制到新的内存块上。

动态内存分配一定要检查所请求的内存是否分配成功,操作内存时是否超出了分配内存的边界;动态内存被释放后不应再次访问它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值