malloc 和new 区别

转载 2012年03月31日 15:48:48

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 
2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 
3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。 
4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存

new 是个操作符,和什么"+","-","="...有一样的地位.
 
malloc是个分配内存的函数,供你调用的.
 
new是保留字,不需要头文件支持.
malloc需要头文件库函数支持.

new 建立的是一个对象,
malloc分配的是一块内存.
 
new建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间
malloc分配的是一块内存区域,就用指针访问好了,而且还可以在里面移动指针.

简而言之:
new   是一个操作符,可以重载   
malloc是一个函数,可以覆盖   
new   初始化对象,调用对象的构造函数,对应的delete调用相应的析构函数   
malloc仅仅分配内存,free仅仅回收内存  

经典面试题之new和malloc的区别

new和malloc的区别是C/C++一道经典的面试题,我也遇到过几次,回答的都不是很好,今天特意整理了一下。 0.       属性 new/delete是C++关键字,需要编译器支持。mall...
  • nie19940803
  • nie19940803
  • 2017年07月29日 21:29
  • 1647

new和malloc的区别

1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_b...
  • zjc156m
  • zjc156m
  • 2013年11月19日 10:24
  • 35439

malloc函数详解以及和new的区别

详细了解malloc函数和new的运用以及相互区别
  • happyxieqiang
  • happyxieqiang
  • 2016年03月01日 21:35
  • 2069

C++中new与malloc的10点区别

转自:http://www.codeceo.com/article/cpp-new-malloc-10-tips.html 前言 几个星期前去面试C++研发的实习岗位,面试官问了个...
  • shellching
  • shellching
  • 2016年03月03日 11:10
  • 1446

c/c++ new与malloc的区别及使用时注意的问题

malloc 定义上:malloc  memory allocation 动态内存分配 是c中的一个函数 extern void *malloc(unsigned int num_bytes)...
  • qq_26816591
  • qq_26816591
  • 2016年08月15日 20:19
  • 2957

整理:new/delete和malloc/free的区别和联系

1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_byt...
  • bat67
  • bat67
  • 2016年07月25日 11:25
  • 1321

new/delete和malloc/free的区别(举例说明)(简单点)

先说说区别: 1. new/delete是C++里才有的。 2. new/delete通常来说是操作符,就是"+","-"一样。 3. new/delete是可以重载的,而重载之后,就成为了函数...
  • shixin_0125
  • shixin_0125
  • 2015年03月25日 10:41
  • 864

C/C++中的malloc、calloc与new的区别

函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。 malloc()函数有一个参数,即要分配的内存空间的大小: void *malloc(size_t size); c...
  • SMF0504
  • SMF0504
  • 2016年05月10日 10:30
  • 2322

数组与malloc、new与malloc的区别

1.数组与malloc的区别
  • wusecaiyun
  • wusecaiyun
  • 2014年08月30日 23:06
  • 1305

C/C++——C++中new与malloc的10点区别

C++中new与malloc的10点区别
  • Linux_ever
  • Linux_ever
  • 2016年01月17日 19:43
  • 2670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:malloc 和new 区别
举报原因:
原因补充:

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