malloc.h:动态存储分配函数头文件,当对内存区进行操作时,调用相关函数.ANSI标准建议使用stdlib.h头文件,但许多C编译要求用malloc.h,使用时应查阅有关手册。

一、原型:extern void *malloc(unsigned int num_bytes);

头文件:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 与 malloc.h 的内容是完全一致的。)

功能:分配长度为num_bytes字节的内存块

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

当内存不再使用时,应使用free()函数将内存块释放。

#include<stdio.h>
#include<malloc.h>
int main()
{char *p;p=(char *)malloc(100);if(p)printf("Memory Allocated at: %x/n",p);elseprintf("Not Enough Memory!/n");free(p);return 0;
}

二、函数声明(函数原型):

  void *malloc(int size);

  说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。

三、malloc与new的不同点

  从函数声明上可以看出。malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:

int *p;

  p = new int; //返回类型为int* 类型(整数型指针),分配大小为 sizeof(int);

  或:

  int* parr;

  parr = new int [100]; //返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int) * 100;

 

    而 malloc 则必须由我们计算要字节数,并且在返回后强行转换为实际类型的指针。

 int* p;

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

  第一、malloc 函数返回的是 void * 类型,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。所以必须通过 (int *) 来将强制转换。

  第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。如果你写成:

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

  代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当你往里头存入一个整数,就会有3个字节无家可归,而直接“住进邻居家”!造成的结果是后面的内存中原有数据内容全部被清空。

  malloc 也可以达到 new [] 的效果,申请出一段连续的内存,方法无非是指定你所需要内存大小。

  比如想分配100个int类型的空间:

  int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。

  另外有一点不能直接看出的区别是,malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。

  除了分配及最后释放的方法不一样以外,通过malloc或new得到指针,在其它操作上保持一致。

总结:

malloc()函数其实就在内存中找一片指定大小的空间,然后将这个空间的首地址范围给一个指针变量,这里的指针变量可以是一个单独的指针,也可以是一个数组的首地址,这要看malloc()函数中参数size的具体内容。我们这里malloc分配的内存空间在逻辑上连续的,而在物理上可以连续也可以不连续。对于我们程序员来说,我们关注的是逻辑上的连续,因为操作系统会帮我们安排内存分配,所以我们使用起来就可以当做是连续的。

malloc.h头文件和malloc函数详解相关推荐

  1. c语言binsearch函数头文件,C++ binary_search()函数详解

    binary_search()函数定义在头文件中,用于查找指定区域内是否包含某个目标元素. 该函数有 2 种语法格式,分别为: //查找 [first, last) 区域内是否包含 val bool ...

  2. python中文件读写--open函数详解

    python中open函数详解 在python中文件的读取分为三步走: 读:打开文件 -> 读文件 -> 关闭文件 (有点像把大象放进冰箱需要几步?的问题) 1.open函数 open函数 ...

  3. Python操作文件之open函数详解

    Python的open函数详解 open(file, mode='rt', encoding=None) -> BaseIO mode参数详解: 字符 含意 'r' 读取(默认) 'w' 写入, ...

  4. C语言的头文件和宏定义详解

    头文件 头文件,顾名思义就是定义在C语言文件头部的那一坨东西 #include <stdio.h> 这就是一个标准输入输出的头文件声明,头文件声明写在定义文件(后缀名.c的文件)的头部,并 ...

  5. Linux文件编程常用函数详解——lseek()函数

    lseek()函数的头文件和形式: #include <sys/types.h> #include <unistd.h> off_t lseek(int filedes, of ...

  6. python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...

  7. python echo函数_python如何调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...

  8. python调用php_python如何调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...

  9. python中open函数打开文件_Python open函数详解:打开指定文件

    掌握了各种操作目录字符串或目录的函数之后,接下来可以准备读写文件了.在进行文件读写之前,首先要打开文件. Python 提供了一个内置的 open() 函数,该函数用于打开指定文件. open() 函 ...

  10. android常用头文件,Android.mk 使用详解

    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点:一.Android.mk 简介二.Android.mk 的基本格式三.Android.mk 深入学习一四. ...

最新文章

  1. 分享一个ASP.NET 文件压缩解压类 C#
  2. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)
  3. atitit.Oracle 9 10 11 12新特性attilax总结
  4. android bitmap着色,android开发 替换bitmap中的颜色值
  5. mySQL 开启事件存储过程
  6. C#从入门到精通源码资源汇总下载(全部免积分)
  7. 【整理】一个真实的图灵:如迷的解谜者,并非万事成谜
  8. 【域名】查看MX记录是否生效
  9. 使用go语言提取ins视频地址和图片地址
  10. 地理信息系统名词解释大全(二)
  11. SpringMVC的在线人数统计监听器
  12. 五点三次平滑的程序源代码
  13. 毕业设计之企业网站后台管理的设想
  14. 已经快失传的面诊、舌诊宝典,终于找齐了(建议收藏)
  15. 自制操作系统Antz day10——实现shell(上)
  16. 超简单的图片爬取项目,复制粘贴就能用,批量爬取动漫图片。(保姆教程,可根据需要修改URL)
  17. Python语法规范
  18. 2017年成为全栈开发工程师的权威指南
  19. 华为eNSP配置访问控制列表ACL
  20. 主持人百度百科词条怎么做?主持人怎么申请百科词条?

热门文章

  1. 显卡天梯图2022年4月 最新显卡性能排行天梯图
  2. 赤菟CH32V307 RISC-V 开发板 rt-thread 的坑 - esp8266的使用
  3. IMU噪声参数辨识-艾伦方差
  4. PC Hunter V1.4
  5. RabbitMQ-彻底删除服务
  6. 节约里程法matlab程序_物流配送路径优化研究 毕业论文.doc
  7. Gerber文件各层的介绍
  8. Ognl表达式(根据Apache-Ognl文档直译)
  9. 解决DOS窗口中文乱码问题
  10. 10个快乐习惯来源于美国哈佛大学