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分配的内存空间在逻辑上连续的,而在物理上可以连续也可以不连续。对于我们程序员来说,我们关注的是逻辑上的连续,因为操作系统会帮我们安排内存分配,所以我们使用起来就可以当做是连续的。



相关文章推荐

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

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

malloc和free函数学习

一、malloc()和free()的基本概念以及基本用法:        1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返...

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

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

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

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

Malloc和mfree函数的实现原理

  • 2008年05月16日 20:23
  • 7KB
  • 下载

malloc函数,大大的详解

1,关于malloc以及相关的几个函数       #include (Linux下)        void *malloc(size_t size);        void free(void...

C语言内存分配方式及malloc,realloc,calloc,alloc.free函数

C语言跟内存分配方式     (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。   (2) 在栈上创建。在执行函数时,...

malloc和free函数详解

本文介绍malloc和free函数的内容。   在C中,对内存的管理是相当重要。下面开始介绍这两个函数:   一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说...
  • gws1229
  • gws1229
  • 2013年08月16日 09:41
  • 484

C语言中 malloc函数用法

一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的...
  • kokodudu
  • kokodudu
  • 2013年09月17日 09:59
  • 23326
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:malloc函数学习
举报原因:
原因补充:

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