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

一、首先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*)但是最好还是在前⾯进⾏强制类型转换,因为这样可以躲过⼀些编译器的检查。

C语言malloc函数详解相关推荐

  1. c语言malloc函数程序,c语言 malloc函数详解

    谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道. 1.关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果: ...

  2. c语言memset对应java,C语言memset函数详解

    C语言memset函数详解 memset() 的作用:在一段内存块中填充某个给定的值,通常用于数组初始化与数组清零. 它是直接操作内存空间,mem即"内存"(memory)的意思. ...

  3. R语言which函数详解以及Rcpp改写

    R语言which函数详解以及Rcpp的改写 引言 which 函数的介绍 which函数的一些小例子 1 2 which函数的改进以及时间对比 引言 首先来介绍一下R语言which函数的作用:whic ...

  4. 【C语言】函数详解(入门到进阶)

    目录 前言 一.什么是函数 二.函数的构成 三.函数的调用和声明 四.函数的参数 五.函数的递归 总结 写在后面 前言 最近帮家里的小朋友整理一些学习C语言的知识点 有整体入门基础文章--[C语言]拯 ...

  5. [C语言] scanf 函数详解多组输入法和gitee 自荐

    自荐 gitee>>> C语言学习练习: C语言学习练习 上面是我的gitee C语言仓库链接,欢迎大家来看看我写的代码.!(◦˘ ³(♡ŐωŐ♡)(给大家推荐gitee(码云)这个 ...

  6. C语言strlen函数详解

    strlen函数详解 一.strlen函数简介 1.函数原型 2.注意事项 二.strlen函数模拟实现 1.计数器方式 2.递归实现 3.指针-指针实现 一.strlen函数简介 1.函数原型 si ...

  7. c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别

    一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...

  8. C++ 中malloc函数详解(转载)

    一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...

  9. c语言 指针函数 详解,[NOTE-C]C语言指针详解(一)

    C语言指针让一切想法变成可能,强转和指针可以看做一项呼风唤雨的利器,但是C语言中指针应用又需要格外的小心,其更灵活的利用内存,因为不当的应用可能引起各种异常,这篇文章就是让我们一起来认识C指针,更好的 ...

  10. C语言scanf函数详解

    函数名: scanf  功 能: 运行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设 ...

最新文章

  1. 杨英(帮别人名字作诗)
  2. OpenCASCADE: Code::Blocks构建OCCT
  3. 谷歌浏览器32位版本安装包_Windows 10 OEM渠道告别32位版本 这意味着什么?
  4. 140.String Compression
  5. CF1100F Ivan and Burgers
  6. “睡服”面试官系列第十七篇之Reflect(建议收藏学习)
  7. 换行符javajava去除字符串中的空格、回车、换行符、制表符
  8. C#将DataTable海量数据导出到Excel
  9. IE6之各种不适记录
  10. 查看JDK进程信息的几个命令
  11. 在Google上做搜索引擎优化 (SEO),最重要的是哪几点?
  12. 在尘世间做最好的自己
  13. 各大著名汽车标志图 来历
  14. 《GPU编程与CG语言之阳春白雪下里巴人》阅读笔记 第一章+第二章
  15. 「 Mac应用加密工具」AppLocker for Mac 2.7.0
  16. Found multiple @SpringBootConfiguration annotated classes
  17. 如何将多个excel合并成一个
  18. 从iOS 11看怎样设计APP图标
  19. alpha测试与beta测试的区别
  20. docker入门级详解

热门文章

  1. WinZip Pro 9 for Mac(专业zip压缩解压工具)
  2. 搭建一个属于自己的星球-快速建站实录(1/3):域名
  3. Linux评分脚本,linux必看脚本大全
  4. 使用secureCRT运行VBScript脚本,自动执行操作教程
  5. c语言实验上机报告,c语言上机实验报告_实验报告.doc
  6. Windows问题记录之任务栏图标透明
  7. ClientToScreen 和ScreenToClient 用法
  8. 激光成像雷达技术 你了解清楚了吗?
  9. 教学系列CentOS安装和配置无线网卡
  10. HealthKit Swift 教程: 开始