美文网首页
malloc/free和new/delete

malloc/free和new/delete

作者: 倾世无涯 | 来源:发表于2017-09-29 11:18 被阅读0次

区别与联系

1.malloc和free是C++/C提供的标准库函数,而new/delete则是C++运算符,注意:一个是函数,一个是运算符,这就早就了他们处理的时期不一样

2.C语言的函数包括程序,都是一种静态链编的过程,而C++程序则强调的是动态联编(注意:一个强调的是编译时,一个强调的运行时)

3.对于非内部数据类型(基本数据类型)的对象的时候,光是malloc/free并不能满足动态对象的要求,因为这是运行时的,对象创建和消亡的同时需要调用构造函数和析构函数.而malloc和free是库函数,因此并不在编译器的控制范围之内.注意:new/delete是操作符,不是函数

4.对于基本数据类型(内部数据类型)因为他们并没有构造和析构的过程,因此这个时候new/delete和malloc/free的效果是等价的

5.虽然在某些情况下(内部数据类型),malloc/free以及new/delete之间是可以相互调用的(不推荐使用),因为如果free掉”new创建的对象的时候”,可能因为无法执行析构函数而导致整个程序的出错

6.malloc/free以及new/delete必须是要配对使用的

7.malloc/free和new/delete都是操作的是堆内存,注意:栈内存的申请释放都是系统自己控制的

8.运行时操作对象比编译时要好,因此在C++中new/delete要比malloc/free要好,但是并不能摈弃掉malloc/free是因为C++有时候需要去调用C的程序,因此不能摈弃

其他资料

细说new与malloc的10点区别

再谈 new/delete/malloc/free

C++学习:malloc/free和new/delete动态内存分配

牛客网试题:malloc和new有什么区别?

C++之new/delete/malloc/free详解

相关文章

  • 2018-05-09

    new delete new delete与malloc free的区别 对于基本数据类型 malloc与free...

  • C++面试(1)

    1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释...

  • C++经典面试题(最全,面中率最高)

    1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释...

  • 面试准备

    C++面试总结 New、Delete和malloc、free的区别? New和Delete自动调用 构造函数 和 ...

  • malloc/free和new/delete

    1. malloc/free与new/delete的区别 1、malloc/free是C语言的标准库函数;new/...

  • C++笔试整理

    1、new 、delete 、malloc 、free 的关系malloc 与 free 是 C++/C 语言的标...

  • c++相关面试题

    1、new、delete、malloc、free的关系delete与new对应会调用对象的析构函数,free只会释...

  • C++面试题——01

    1.new 、 delete 、 malloc 、 free 关系 delete 会调用对象的析构函数 , 和 n...

  • malloc/free和new/delete

    区别与联系 1.malloc和free是C++/C提供的标准库函数,而new/delete则是C++运算符,注意:...

  • 成员函数、继承(20170213)

    C++06 区分new/delete malloc/free new /delete 运算符,不需要转换,自动...

网友评论

      本文标题:malloc/free和new/delete

      本文链接:https://www.haomeiwen.com/subject/jwvbextx.html