malloc函数学习

原创 2015年07月08日 13:27:39

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

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

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

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

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


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

void *malloc(int size);

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


三、malloc与new的不同点

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

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

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

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

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

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


总结:

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



malloc函数的简单实现

http://lionwq.spaces.eepw.com.cn/articles/article/item/18555
  • isunn
  • isunn
  • 2014年11月09日 11:06
  • 1464

c++ free()函数和malloc()函数的使用

malloc是否与free是对应的,如果是new分配的只能用delete而不是free进行释放。 int  a=10; int  *arr=(int *) malloc(sizeof (int)* ...
  • u014546553
  • u014546553
  • 2016年12月13日 14:09
  • 3100

malloc函数,大大的详解

1,关于malloc以及相关的几个函数       #include (Linux下)        void *malloc(size_t size);        void free(void...
  • msdnwolaile
  • msdnwolaile
  • 2016年06月17日 17:22
  • 3723

C++学习:动态内存分配对象的new/delete运算符与函数malloc/free

C++学习:对象的new/delete运算符与函数malloc/free摘要: 在学习java的时候,都是使用new来创建新的对象的,对象的存放在堆里的.而回收是由java虚拟机garbag...
  • qq_29924041
  • qq_29924041
  • 2017年06月03日 17:34
  • 617

学习之第一周小结 malloc、calloc、realloc、free、new、delete函数应用

学习之第一周小结  malloc、calloc、realloc、free、new、delete函数应用 malloc()、free()、calloc()、realloc()、在头文件stdlib.h...
  • walkerkalr
  • walkerkalr
  • 2013年03月17日 17:53
  • 736

malloc和free函数学习

一、malloc()和free()的基本概念以及基本用法:        1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返...
  • zheng0518
  • zheng0518
  • 2013年05月10日 17:31
  • 475

C语言学习之内存管理函数malloc()和free()

原文:http://blog.csdn.net/sdwuyulunbi/article/details/6643481       在C语言的学习中,对内存管理这部分知识的掌握尤其重要。 ...
  • dscyw
  • dscyw
  • 2013年04月04日 21:32
  • 832

c++学习笔记(四):c++中new delete关键字 VS c语言中malloc free函数

1 new delete 操作符号 c++的关键字,malloc free是c语言的库函数。     2 new malloc都是在堆上分配内存  由delete free释放 。 分配释放基础类型 ...
  • my_sky2012
  • my_sky2012
  • 2015年10月22日 14:02
  • 392

C语言malloc,calloc,realloc,free内存分配函数学习笔记

内存分配 使用内存分配函数可以对内存进行分配、释放等操作。内存分配函数一般返回的是void类型的指针,传统上曾使用返回char类型的指针,因为char类型只占据1字节。而最新ANSI规定返回void...
  • zrf2112
  • zrf2112
  • 2015年02月23日 22:34
  • 353

黑马程序员-C语言学习笔记-----内存分配函数(malloc、calloc、realloc)

了解malloc、calloc、realloc动态内存分配函数 三个函数在stdlib.h中的声明如下:   void* realloc(void* ptr, unsigned newsize);  ...
  • wenfeng340
  • wenfeng340
  • 2015年03月11日 21:57
  • 282
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:malloc函数学习
举报原因:
原因补充:

(最多只允许输入30个字)