12.1动态内存

malloc()函数

malloc是动态内存分配函数,用于申请一块连续的指定大小的内存块区域,以void*类型返回分配的内存区域地址。

函数原型

void* malloc(unsigned int num_bytes);

分配长度为num_bytes字节的内存块。

使用时要包含头文件stdlib.h,也可以使用#include <malloc.h>,但并不建议,因为它不是标准的c库。

使用之前要计算出字节数,malloc开辟的是用户所需的字节数大小的空间。

函数返回值:分配成功则返回被分配内存的指针,否则返回空指针NULL。

注意事项:

返回类型为无类型指针,使用时要强制转换为所需要的类型。

指针自身 = (指针类型*) malloc (sizeof(指针类型)*数据数量)

int *p = NULL;
int n = 10;
p = (int *)malloc(sizeof(int)*n);//malloc()函数中的参数以字节为单位。
//内存分配成功返回内存首地址的指针,失败返回NULL。

image-20240520160345322

**重点:**在使用malloc开辟空间时,使用完成一定要释放空间,如果不释放就会造成内存泄漏
什么是内存泄漏。在使用malloc函数开辟的空间中,不要进行指针的移动,因为一旦移动可能出现申请的空间和释放空间大小的不匹配。

free()函数

作用:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间。完了之后要把指针指向NULL。(我的理解是被分配的这块内存被“赎身”了,成了一块自由内存,但是原来的指针还指向这块区域,如果这块内存后来被分配了其他信息,但是还可以通过原来的指针来访问到,那就出了大问题,莫名想起赵德汉的“是谁把钱放到我家冰箱的?”所以需要给原来的指针指向NULL。)
ont>。在使用malloc函数开辟的空间中,不要进行指针的移动,因为一旦移动可能出现申请的空间和释放空间大小的不匹配。

free()函数

作用:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间。完了之后要把指针指向NULL。(我的理解是被分配的这块内存被“赎身”了,成了一块自由内存,但是原来的指针还指向这块区域,如果这块内存后来被分配了其他信息,但是还可以通过原来的指针来访问到,那就出了大问题,莫名想起赵德汉的“是谁把钱放到我家冰箱的?”所以需要给原来的指针指向NULL。)

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值