C语言内存相关free、calloc、realloc函数

free

函数原型: void free(void *ptr);  //*ptr是申请的内存空间地址

只能释放 malloc calloc realloc 动态申请的内存

calloc

函数原型: void * calloc(size_t nmemb,size_t size);

在内存堆中,申请nmemb块,每块大小为size个字节数的连续区域

:  char * p=(char *) calloc (3,100);

malloc内存中存放的内容是随机的,calloc函数申请的内存内容为0。也就是说,malloc需要初始化,用calloc一旦申请空间成功,内容就为0。

realloc动态追加或减少空间

函数原型: void *realloc(void *ptr, size_t size)

作用:尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。

参数:
	ptr  -- 指针指向一个要重新分配内存的内存块,该内存块之前是通过调用 malloc、calloc 或 realloc 进行分配内存的。如果为空指针,则会分配一个新的内存块,且函数返回一个指向它的指针。                       
  	size -- 内存块的新的大小,以字节为单位。如果大小为 0,且 ptr 指向一个已存在的内存块,则 ptr 所指向的内存块会被释放,并返回一个空指针。
返回值:
	该函数返回一个指针 ,指向重新分配大小的内存。如果请求失败,则返回 NULL。
	动态申请的内存地址可能改变,因此必须接收返回值。

注意事项
1、指向堆区的指针变量不要随意改变指向,否则可能导致内存泄漏;
2、不要操作已释放的空间,其内容不确定;
3、不要重复释放;

防止重复释放的操作

if(p!=NULL)
{
    free(p);
    p=NULL;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值