概述
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使用过的内存做了标记告诉系统这块内存不用了,一旦调用后, 那个地址是不被保护的, 也就是说其他的变量随时可能占用那个地址。
最后
以上就是瘦瘦衬衫为你收集整理的C语言中的malloc函数和free函数的全部内容,希望文章能够帮你解决C语言中的malloc函数和free函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复