C语言malloc函数详解

news/2024/11/22 9:22:13/

       通过查阅资料,发现对于这些函数的解释说明非常多,也都非常细。为了便于大家记忆,下面是我对此函数的总结:

一、首先malloc()和free()的用法及记忆应该对照着来看。

二、函数原型及说明:

void *malloc:该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回⼀个空指针(NULL)。关于分配失败的原因,应该有多种,⽐如说空间不⾜就是⼀种。void *free():该函数是将之前⽤malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到⾃由。

三、函数的用法:

其实这两个函数⽤起来倒不是很难,也就是malloc()之后觉得⽤够了就甩了它把它给free()了,举个简单例子:

int *link = NULL;link = (int*)malloc(size(int)); //申请一段为int大小的内存空间。if(link == NULL){         exit(1);} else{get(link);free(link);     //使用完之后应该释放掉,防止内存泄漏。link = NULL;

就是这样!当然,具体情况要具体分析以及具体解决。⽐如说,你定义了⼀个指针,在⼀个函数⾥申请了⼀块内存然后通过函数返回传递给这个指针,那么也许释放这块内存这项⼯作就应该留给其他函数了。

四、关于函数使⽤需要注意的⼀些地方

1. 申请了内存空间后,必须检查是否分配成功。

2. 当不需要再使⽤申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防⽌程序后⾯不⼩⼼使⽤了它。

3. 这两个函数应该是配对。如果申请后不释放就是内存泄露;如果⽆故释放那就是什么也没有做。释放只能⼀次,如果释放两次及两次以上会出现错误(释放空指针例外,释放空指针其实也等于啥也没做,所以释放空指针释放多少次都没有问题)。

4. 虽然malloc()函数的类型是(void*)任何类型的指针都可以转换成(void*)但是最好还是在前⾯进⾏强制类型转换,因为这样可以躲过⼀些编译器的检查。


http://www.ppmy.cn/news/203428.html

相关文章

鸿蒙OS麒麟659,华为和荣耀手机上的麒麟659到底处于什么水平?

原标题:华为和荣耀手机上的麒麟659到底处于什么水平? 自从华为走上了自主处理器之路后,就越走越顺了,每逢麒麟9XX系列更新,同期的高通都不是对手,譬如最近很火的麒麟970,现在基本稳坐安卓手机处…

华为麦芒5云空间升级_华为麦芒5手机怎么升级?华为手机系统更新升级方法大全...

我们都知道,无论是苹果的IOS还是安卓系统的手机,厂家为了修复一些BUG或是为了改善我们的用户体验、增加一些手机新功能,都会给我们的智能手机进行一些系统更新升级,这不前段时间华为就爆出为了让更多的华为用户体验“很吓人的技术…

oppoReno4se和华为麦芒9 哪个好

oppoReno4se手机采用6.43英寸AMOLED全面极点屏(90Hz),分辨率2400x1080像素,OPPOReno4SE有着超闪白、超闪蓝、超闪黑三个配色,不同配色在光芒流转间给人带来不同的光线质感。 oppoReno4se更多使用感受和评价&#xff1a…

【c语言】malloc函数详解

谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道。 1、关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果: 也可以这样认为(window下)原型: exter…

麦芒8能安装鸿蒙系统吗,首颗5G基带芯片麦芒8发布鸿蒙最新进展

5月29日,在台北国际电脑展上,联发科技发布突破性的全新5G移动平台,该款多模5G系统单芯片(SoC)采用7nm工艺制造,将为首批高端5G智能手机提供强劲动力,展示联发科技在5G方面的领先实力。 集成化的全新5G移动平台内置5G调…

华为麦芒 6 上手评测:能否继续麦芒 5 的辉煌?

华为麦芒 6 上手评测:能否继续麦芒 5 的辉煌? 从 2013 年的第一代麦芒 A199 到现在的麦芒 6,作为给年轻人专属定制的手机,麦芒系列已经走过了四个年头。华为麦芒 6 更是华为的第一款全面屏手机与四摄手机,而这也足以证…

麦芒6手机一键root,华为麦芒6怎么使用

麦芒6可以用什么软件root Root后对手机的影响、风险: 手机Root以后,系统可能无法达到最佳工作状态,部分对于系统安全性较高的功能可能无法正常运行(比如手机银行)。同时可能会存在兼容性不好、系统易受病毒入侵等问题。…

LeetCode中等题合集 python

目录 3. 无重复字符的最长子串53. 最大子数组和80. 删除有序数组中的重复项 II442. 数组中重复的数据209. 长度最小的子数组59. 螺旋矩阵 II24. 两两交换链表中的节点19. 删除链表的倒数第 N 个结点142. 环形链表 II 3. 无重复字符的最长子串 滑动窗口,类似的题目还…