C语言动态内存管理

C语言内存管理四大函数

1、malloc函数

语法:malloc(你要申请内存空间的大小),默认返回void*型指针,不过为了方便看,返回时转换一下类型

char * ptr;
ptr = (char *)malloc(sizeof(char)*4);

由于malloc函数不会帮你初始化申请的空间,所以需要你自己去初始化,也可以使用(string.h)库函数memset(void*,void,sizeof())进行初始化也可以用

2、calloc函数

语法与malloc完全一样,唯一的区别就是calloc会自动初始化,数字默认初始化为0,字符默认初始化为空格

char * ptr;
ptr = (char *)calloc(sizeof(char)*4);

当你第一次申请的空间不足需要第二次申请并且复制第一次的数据可以用string.h)库函数memcpy(void*,void*,int)进行拷贝当然也可以用

3、realloc函数

这个函数可以理解为在原来的基础上加x个数据,你就需要realloc(ptr,原来的个数+x),原来的数据保持不变

char * ptr;
ptr = (char *)malloc(sizeof(char)*2);
//对ptr进行一系列操作
ptr = (char *)realloc(ptr,sizeof(char)*4);

4、free函数

语法:void free(void *ptr);

char * ptr;
ptr = (char *)malloc(sizeof(char)*4);
free(ptr);

内存泄漏问题

1、隐式内存泄漏:malloc申请内存用完后没有及时释放
2、丢失内存块地址:把指向一块内存块的唯一指针指向其他地址,之前那个地址就没人直到在哪,也就无法释放了
为了避免内存泄漏,malloc(等申请空间的函数)与free函数成对出现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值