函数声明:

Tips: void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

malloc 函数申请空间需要使用free释放。

void* malloc(int size)

malloc向系统申请size字节的内存空间,返回值类型为void *。

使用说明:

int *p;

p = (int *)malloc( sizeof(int) );

  1. 因为malloc返回的是不确定类型的指针,所以返回之前必须经过类型强制转换,否则编译报错,如:“ 不能将void*赋值给int*变量 ”。
  2. malloc只管分配内存,并不会初始化,其内存空间中的值可能是随机的。如果分配的这块空间原来没有被使用过,那么其中每个值都可能是0。相反,空间里面可能遗留各种各样的值。
  3. 实参为需要分配的字节大小,如果malloc(1),那么系统只分配了1个字节的内存空间,这时注意,如果在这块空间中存放一个int值,由于int类型占4个字节,那么还有3个字节未分配空间,系统就会在已经分配的那1个字节的基础上,依次向后分配3个字节空间,而这就占有了“别人”的3个字节空间,“别人”原有的值就被清空了。
  4. 分配的空间不再使用时,要用free函数释放这块内存空间。

for example:

int *p;p = (int *)malloc( sizeof(int) * 100 );

malloc函数工作机制:

  • malloc函数被调用时,它会沿空闲链表寻找一个可以满足需求的内存块,然后把所需大小的内存块分配给用户,剩下的返回到链表上。free函数被调用时,它将释放的内存块连接到空闲链表上。
  • 到最后,空闲链表会被分成很多小的内存片段,当用户申请一块较大的内存空间时,空闲链表上可能没有满足需求的内存块了,这时,malloc函数请求延时,并将空闲链表内的小内存片段整理成大的内存块,最终返回。

c语言 malloc 函数用法相关推荐

  1. c语言malloc函数用法_小白对c语言数组的基础总结

    数组 数组是一系列相同类型元素有序的集合. 数组的定义: 一般形式为: 类型符 数组名 [常量表达式] 如 int a[5]; 表示数组有五个元素,a[0]-a[5],不存在元素a[5]. *注意: ...

  2. c语言malloc函数用法_C语言内存模型!小本本记起来啊!

    一.C语言的内存分配模型 1.程序代码区:存放函数体的二进制代码. 2.全局区数据区:全局数据区划分为三个区域.全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全 ...

  3. C语言atoi()函数用法

    C语言atoi()函数用法 头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * s ...

  4. fclose在c语言中的作用,c语言fcloseall函数用法实例介绍

    c语言fcloseall函数用法实例介绍.fcloseall函数的返回值,函数 fcloseall() 将所有打开的流与其底层的文件或功能集合关闭.任何缓冲的数据都将首先被写入,使用 fflush(3 ...

  5. linux c语言 select函数用法

    原文地址:点击打开链接 linux c语言 select函数用法 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 co ...

  6. c语言字符串strchr,C语言 strchr 函数用法

    C语言 strchr 函数用法 C语言中strchr函数作用是为在一个串中查找给定字符的第一个匹配之处,该函的原型为"char *strchr(const char *str, int c) ...

  7. R语言missing()函数用法及举例

    R语言missing()函数用法及举例 函数作用就是如果y没有具体的值,那么输出为真,如果y有具体的值,那么输出为假,这么说可能有点抽象,举个例子: 对于这样一段代码 myplot <- fun ...

  8. c语言strcmp函数用法_strcmp()C库函数用法和示例

    c语言strcmp函数用法 C programming standard library provides strcmp() function in order to compare two stri ...

  9. C语言malloc函数的功能及用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 点击跳转浏览. https://blog.csdn.net/qq_26501341/article/d ...

最新文章

  1. php $this self,php中self与$this的区别
  2. 【Android 面试基础知识点整理】
  3. Windows 10 中 Eclipse中无法添加Courier New字体的解决方法!
  4. 【数理知识】特征值、特征向量、左特征向量
  5. iOS快速开发框架--Bee Framework
  6. div 隐藏_CSS实现六边形Div图片展示效果
  7. 【转载】15分钟搭建Linux操作系统+Oracle数据库的环境
  8. 纯英文换行的css,利用CSS实现纯英文数字自动换行
  9. 阻塞和非阻塞、同步和异步 、五种IO模型
  10. Win-MASM64汇编语言-标志寄存器(EFLAGS/PSW/PUSHF/POPF)
  11. jmeter快速修改协议、服务器名称或IP、端口号的方法
  12. 2017年西安邮电大学第十二届数学建模竞赛B题论文
  13. mysql登陆案例_Mysql用户登陆验证过程 案例
  14. 大一下c语言笔记本电脑,适合大一新生的笔记本电脑排行榜2020_大一新生适合什么笔记本电脑...
  15. 个人项目----吴华文
  16. IC中LDO电路的DRC验证问题
  17. c语言volatile含义,c语言中volatile关键字是什么含义怎么办呢?
  18. 工地人员定位原理又是什么--新导智能
  19. 为什么Python是2023最值得学的编程语言?
  20. 一幅长文细学Vue(一)——Webpack打包工具

热门文章

  1. 计算机网络教室教师岗位责任,计算机室网络教室管理员岗位职责.docx
  2. 'string' : undeclared identifier
  3. R数据分析实战——奥运会120年历史
  4. 用程序解密爱因斯坦经典难题
  5. 精品基于Uniapp+SSM实现的Android的校园新闻管理系统实现的App
  6. HTML5知识点整理
  7. android进度条已加载部分闪光,Android进度条ProgressBar的实现代码
  8. VScode无法启动--- 感谢百度,感谢好人,感谢CCTV
  9. 你不知道的声纹识别,尽在阿里聚安全攻防挑战赛!
  10. Structural Deep Clustering Network阅读与翻译