new和malloc

  1. new不仅可以做内存开辟,还可以做内存初始化操作。malloc只能做内存开辟,初始化需要另外的语句实现。
  2. malloc开辟内存失败,是通过返回值和nullptr作比较,而new开辟内存失败,是通过抛出bad_alloc类型的异常来判断。

 malloc开辟一块int类型大小的内存并赋值为20

int main(){
    int *p = (int *) malloc(sizeof(int));
    if(p==nullptr){
        return -1; // 开辟失败
    }
    *p = 20;
    free (p);
    return 0;
}

 new开辟一块int类型大小的内存并赋值为20

int main(){
    try{
        int *p1 = new int (20);
    }
    catch(const bad_alloc &e){
    }
    delete p1;
}

malloc开辟一块有20个整数的数组内存

int main(){
    int *q = (int *) malloc(sizeof(int)*20);
    if(q==nullptr){
        return -1; // 开辟失败
    }
    free (q);
    return 0;
}

new开辟一块有20个整数的数组内存,并赋初值0

int main(){
    int *q1 = new int[20]();
    delete []q1;
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值