返回首页

浅谈malloc与 kmalloc、cmalloc、realloc、new 的区别

时间:2009-07-19 17:02来源:未知 作者:周天文 点击:
相关函数原型: 1. Malloc 作 用: Malloc用于动态申请存储空间,它不是关键字,而是一个申请内存的函数 用 法: Malloc 返回一块内存地址的指针,否则会返回空指针null,这里要注意的是
  

 

相关函数原型:

1. Malloc

作 用: Malloc用于动态申请存储空间,它不是关键字,而是一个申请内存的函数

用 法:

Malloc 返回一块内存地址的指针,否则会返回空指针null,这里要注意的是,当内存不再使用的时候,用free()函数进行对内存的释放。

2.calloc

作 用:calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。

例 子:

3.realloc

作 用:重新分配内存空间。

例 子:

4.总结:

malloc: 动态分配size字节空间,返回它的指针。(此函数不能初始化内存空间)
        calloc:动态分配n个连续的size字节空间,返回第一个指针。它有两个参数,分别为参数的数目,和每个参数的大小,那么这两个参数的乘积就是这个分配空间的大小。(此函数可以初始化内存空间)
        realloc:将指针指向的内存空间扩展成n个,把它放在最后解释因为偶不建议使用,确实要用也要考虑多种情况。
        free:释放上述两函数分配的空间;

malloc与new :

1 、new 建立的是一个对象,malloc 分配的是一块内存。
        2、malloc申请的是heap区的内存空间,返回的是指针。new 建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间。(注意用delete释放空间)。
        3、malloc/free是C/C++中的方法(函数),new/delete是C++中的操作符。
        4、使用free之前要判断,使其free的指针是!NULL的,使用delete则无须判断。
        5、free掉的内存是该指针指向的一段内存空间,里面应该是空的。而delete掉的内存是里面确实存有数据或者对象的。

最后要注意的是malloc和free 、new和delete成对使用,以免不必要的麻烦。

------分隔线----------------------------

  • 李老师
  • 李老师
  • 胡老师
  • 胡老师
合作伙伴
  • 武汉工程大学合作培训机构

  • 国家信息技术紧缺人才培养工程(NITE)

  • ARM公司全球授权培训中心

  • 国内首家Symbian授权培训

  • 微软全球嵌入式合作伙伴

  • Altera全球合作培训机构

在线客服
  • 客服热线:
    139-8620-3604
    159-2752-9536



  • 官方微信
  •  咨询微信二维码