new与malloc的区别

看起来,它们的不同只是new比malloc用起来更方便而已。仅仅是这样吗?不是吗?

  1 来源不同:

    1)new/delete是C++中的操作符,而malloc/free是C中的标准库函数,需要库文件支持。为了保证程序的可读性和正确性,new与delete、malloc与free要配对使用;

    2)可重载自定义:重载new/delete操作符,可实现在申请内存的时候自定义分配策略,如分配后自动初始化等;

    3)new/delete可自动调用构造/析构函数,而malloc/free不会。

  2 用法不同:

    1)new不需要程序员计算内存,而malloc需要程序员计算出具体的字节数;

    例如,申请一个长度为4的int数组的不同:

      int *pArr=new int(4)

      int *pArr=(int*)malloc(4*sizeof(int));

    2)new返回的指针类型与申请类型一致,而malloc并不识别申请的内存是什么类型,它只关心申请空间的大小,返回指针类型为void*。

  3 new是类型安全的,malloc不是。如:

    int *p = new float[2];   //编译时错误

    int *p = malloc (2*sizeof(float));  //编译时无法指出错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值