`
chriszeng87
  • 浏览: 738507 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

malloc/free和new/delete的比较

 
阅读更多

转自http://www.cppblog.com/Lee/archive/2009/03/09/75990.html

相同点:都可用于申请动态内存和释放内存

不同点
(1)操作对象有所不同
malloc与 free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。

(2)在用法上也有所不同
函数malloc 的原型如下:
void * malloc(size_t size);
用malloc 申请一块长度为length 的整数类型的内存,程序如下:
int *p = (int *) malloc(sizeof(int) * length);
我们应当把注意力集中在两个要素上:“类型转换”和“sizeof”。

分享到:
评论

相关推荐

    malloc和new的区别

    在实际开发中,malloc/free和new/delete都可以用于动态内存管理,但是它们有着不同的应用场景和用途。malloc/free通常用于C语言和C++语言混合编程环境中,而new/delete则更适合纯C++语言开发环境。同时,new/delete...

    深入理解C++中的new/delete和malloc/free动态内存管理及区别介绍

    本篇文章将深入探讨C++中的`new/delete`和C语言中的`malloc/free`这两种动态内存管理方式,以及它们之间的区别。 首先,`malloc/free`是C/C++标准库提供的函数,用于在运行时动态分配和释放内存。`malloc(size_t ...

    C++中malloc与free、new与delete的详解与应用

    C++面试经常会问到关于malloc/free和new/delete的区别,网上有不同版本的解释,这里总结下并加上个人理解和使用。 两者相同点 1.都可以申请动态堆内存。 两者不同点 1.new/delete是C++的操作符,malloc/free是C/...

    Malloc和new区别

    与 Malloc 和 Free 不同,New 和 Delete 是编译器级别的特性,而非库函数。 #### 二、动态内存分配与初始化 对于 C++ 中的数据结构或对象来说,仅使用 Malloc 和 Free 无法完全满足需求。具体原因如下: 1. **...

    C++中new和malloc的区别

    在C++中,动态内存分配主要通过new和delete运算符实现,而C语言中主要使用malloc和free函数。尽管这两组工具看似执行相似的功能,但它们之间存在着本质的差异。 相同点 new和malloc都可以用来在堆上分配内存,且都...

    C++中对使用malloc/new引起的内存泄露的检查

    在C++中,`malloc`和`new`是动态内存分配的主要方式,而`free`和`delete`则用于释放这些内存。本文将详细介绍如何检查和防止由`malloc/new`引起的内存泄漏。 **1. 重载`new`和`delete`** 为了更好地管理和跟踪内存...

    11_new&delete与malloc&free 之间的关系与区别1

    "new与delete和malloc与free之间的关系与区别" 在C++编程语言中,new和delete是C++的关键字,是一种操作符,可以被重载,而malloc和free是C语言的库函数,并且不能重载。这两对函数都是用于内存管理的,但是它们...

    C++中new与delete、malloc与free应用分析

    一般来说,在C/C++的面试时,对于new/delete和malloc/free这两对的使用和区别经常被考查到,如果这种基础的问题都答不上来,估计很难过面试了。本文即是对new/delete和malloc/free这两对的使用和区别较为简单的分析...

    malloc 与new的区别

    尽管malloc和free以及new和delete在不当使用下都有可能出现内存泄漏,但使用new和delete时,编译器能够提供更精确的信息,比如在哪个文件的哪一行发生内存泄漏,这使得调试和问题定位更加方便。 总结来说,new和...

    C++动态内存分配(new/new[]和delete/delete[])详解

    C++动态内存分配(new/new[]和delete/delete[])详解 为了解决这个普通的编程问题,在运行时能创建和销毁对象是基本的要求。当然,C已提供了动态内存分配函数malloc( )和free( ),以及malloc( )的变种(realloc:改变...

    Linux之内存泄漏检测valgrind-memcheck. 附件测试代码.cpp

    【1】文章附件代码:https://blog.csdn.net/weixin_43780617/article/details/131805359?spm=1001.2014.3001.5501 【2】其中包含5种内存泄漏...4. 堆内存泄漏,没有成对使用malloc/free和new/delete; 5.两次释放内存;

    c++内存的动态申请与释放.pdf

    C++提供了两种机制来动态分配和释放内存:`malloc/free` 和 `new/delete`。 - **`malloc/free`**:这是C/C++中的标准库函数,用于在运行时动态地分配和释放内存。 - **`new/delete`**:这是C++提供的运算符,除了...

    百度,淘宝等公司的面试题

    这里主要讨论的是`malloc/free`和`new/delete`的区别和使用场景。 首先,`malloc/free`是C/C++标准库提供的函数,用于动态内存分配和释放。它们在C++中主要适用于原始数据类型,如整型或字符型等。`malloc`函数接受...

    new与malloc 的区别和用法

    首先,`new`和`delete`是C++中的运算符,而`malloc`和`free`是C/C++标准库中的函数。`new`不仅分配内存,还会根据需要调用对象的构造函数,而`malloc`只负责分配内存,不处理对象的构造和析构。当涉及非内置数据类型...

    c/c++ mallocfree newdelete 区别

    在C/C++编程中,内存管理是至关重要的一个环节,其中`malloc`和`free`是C语言标准库提供的函数,而`new`和`delete`是C++中的运算符,它们都用于动态内存的分配和释放。虽然两者在功能上有相似之处,但在使用和功能上...

    内存管理中malloc和free的奥秘

    这就意味着malloc和free必须配套使用,不能与new或delete混淆使用。 使用malloc和free进行内存管理时,有几个重要的注意事项: 1. 分配内存后,必须检查malloc是否成功返回了非空指针,否则可能导致运行时错误。 2....

    CC++中的内存管理

    3. **malloc/free与new/delete的比较**:`new`和`delete`更适用于C++,因为它们与C++的对象模型紧密结合;`malloc`和`free`则更适合处理原始字节流。 五.常见内存错误 1. **内存泄露**:分配的内存没有被正确释放...

Global site tag (gtag.js) - Google Analytics