new与malloc的不同

标签: 常见问题
21人阅读 评论(1) 收藏 举报
分类:

new/delete与malloc/free的不同:

①new/delete分配内存的位置是自由存储区,malloc/free分配内存的位置是堆

自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区

堆是操作系统所维护的一块特殊内存,用于程序的内存动态分配

②new内存分配成功返回完整类型指针,而malloc是返回void*

类型安全很大情况下等于内存安全,new是符合类型安全性的操作符

③new内存分配失败时,会抛出bac_alloc异常,malloc分配内存失败时返回NULL

除此之外,使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算

而malloc则需要显式地指出所需内存的尺寸

④new是C++操作符,而malloc是函数

new/delete允许重载,malloc/free不允许,这也意味着new/delete的实现可以基于malloc

而malloc的实现不可以去调用new

⑤new/delete会调用构造函数和析构函数,而malloc/free不会




查看评论

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

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

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

C++中new与malloc的10点区别
  • Linux_ever
  • Linux_ever
  • 2016-01-17 19:43:25
  • 3483

malloc/free和new/delete的区别

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要...
  • chance_wang
  • chance_wang
  • 2007-05-14 22:31:00
  • 18932

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

详细了解malloc函数和new的运用以及相互区别
  • happyxieqiang
  • happyxieqiang
  • 2016-03-01 21:35:04
  • 2910

内存动态分配与释放,malloc和new区别

1.   C语言的函数malloc和free  (1) 函数malloc和free在头文件中的原型及参数        void * malloc(size_t size) 动态配置内存,大小有...
  • yang090510118
  • yang090510118
  • 2014-07-02 15:33:13
  • 3454

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:10
  • 6135

new与malloc之间的区别

1、new操作符从自由存储区上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是c++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而...
  • sinat_29844779
  • sinat_29844779
  • 2017-03-14 16:53:46
  • 343

改善C++ 程序的150个建议学习之建议21:尽量用new/delete代替malloc/free

建议21:尽量用new/delete代替malloc/free 在C语言中,我们已经熟悉利用malloc/free来管理动态内存,而在C++中,我们又有了新的工具:new/delete。你不禁会产生...
  • baliguan163
  • baliguan163
  • 2013-09-11 10:02:03
  • 2186

动态申请内存new和malloc的区别

文章转自http://www.cnblogs.com/fly1988happy/archive/2012/04/26/2470542.html new和malloc的区别 1. mal...
  • u012421537
  • u012421537
  • 2015-03-15 20:52:42
  • 2240

new和malloc的区别及内存管理及char[]与char*区别

1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_byt...
  • Lu597203933
  • Lu597203933
  • 2015-03-10 19:47:13
  • 2429
    个人资料
    持之以恒
    等级:
    访问量: 19万+
    积分: 1万+
    排名: 2095
    最新评论