C语言中的malloc函数和free函数

malloc()函数

最近待学习计算机代码实现的底层原理,里面讲到了动态分配的问题,正规的C是无法直接使用变量给一个数组动态分配大小的,
这就用到了malloc()函数。

中文名称:动态内存分配
用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存

 头文件   #include<malloc.h>或者#include<alloc.h>两者的内容是完全一样的
	int n;//数组元素个数
	int *add;
	scanf("%d",&n);
	add=(int *)malloc(sizeof(int)*n);//内存申请

如果分配成功:则返回指向被分配内存空间的指针
否则返回指针NULL
同时,当内存不再使用的时候,应使用free()函数将内存块释放掉。

标准格式:
(类型说明符*)malloc(size)

功能:在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址
“类型说明符”表示把该区域用于何种数据类型,表示把返回值强制转换为该类型指针
“size”是一个无符号数。

例如: *pc=(char )malloc(100);
表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。

free()函数

使用方法:free(void*ptr)

释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域。

free()只能释放堆内存,也就是malloc()创建

这里有个问题,有的文章上说free函数可以直接释放malloc创建的内存,有的文章说它是给malloc使用过的内存做了标记告诉系统这块内存不用了,一旦调用后, 那个地址是不被保护的, 也就是说其他的变量随时可能占用那个地址。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值