zoukankan      html  css  js  c++  java
  • C/C++

    new/delete与malloc/free的区别主要表现在以下几个方面:

      注意:最主要的区别,new/delete是运算符,而malloc/free是函数

      (1)、new能够自动计算需要分配的内存空间,而malloc需要手工计算字节数。

          例如,int* p1=new int[2] , int* p2=malloc(2*sizeof(int))。

      (2)、new/delete返回直接带具体类型的指针,malloc/free返回void类型的指针。

      (3)、new是类型安全的,而malloc不是。例如,int* p=new float[2],编译时就会报错;而int* p=malloc(2*sizeof(float)),编译时编译器就无法指出错误来。

      (4)、new一般由两步构成,分别是new操作和构造。

          new操作对应于malloc,但new操作可以重载,可以自定义内存分配策略,不做内存分配,甚至分配到费内存设备上,而malloc不可以。

      (5)、new将调用构造函数,而malloc不能;delete将调用析构函数,而free不能。

      (6)、malloc/free需要库文件stdlib.h支持,new/delete则不需要库文件支持

      

  • 相关阅读:
    tcpdump高级过滤
    Flask简单学习
    nginx+keepalived高可用web负载均衡
    Golang基础(5):Go语言反射规则
    Golang基础(4):Go结构体
    分布式SESSION一致性
    JSON WEB TOKEN (JWT)
    Table布局
    GRID布局
    三种方式实现轮播图功能
  • 原文地址:https://www.cnblogs.com/goul/p/9676116.html
Copyright © 2011-2022 走看看