我是靠谱客的博主 瘦瘦衬衫,最近开发中收集的这篇文章主要介绍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使用过的内存做了标记告诉系统这块内存不用了,一旦调用后, 那个地址是不被保护的, 也就是说其他的变量随时可能占用那个地址。

最后

以上就是瘦瘦衬衫为你收集整理的C语言中的malloc函数和free函数的全部内容,希望文章能够帮你解决C语言中的malloc函数和free函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部