C++ new 和 malloc的区别

本文详细探讨了C++中的new和delete与C语言中的malloc和free的区别,包括它们的属性、参数、返回类型、自定义类型处理、重载能力、内存区域以及分配失败时的行为。new关键字在C++中提供了类型安全性,调用构造函数进行初始化,而malloc仅分配内存,不涉及对象构造。此外,new分配失败会抛出异常,malloc则返回NULL。
摘要由CSDN通过智能技术生成

这里先对new和delete简单进行一下总结,然后再细说new和malloc的区别。

一、new和delete

C语言提供了malloc和free两个系统函数,完成对堆内存的申请和释放。而C++则提供了两个关键字new和delete;

1.1 规则

new/delete是关键字,效率高于malloc和free。
配对使用,避免内存泄漏和多重释放。
避免交叉使用,比如malloc申请空间delete释放,new出的空间被free。
new/delete 主要是用在类对象的申请和释放。申请的时候会调用构造器完成初始化,释放的时候,会调用析构器完成内存清理。
1.2 new/new[] 用法

//开辟单地址空间
int *p = new int;  //开辟大小为sizeof(int)空间
int *q = new int(5); //开辟大小为sizeof(int)的空间,并初始化为5。
//开辟数组空间
//一维
int *a = new int[100]{0};//开辟大小为100的整型数组空间,并初始化为0。
//二维
int (*a)[6] = new int[5][6];
//三维
int (*a)[5][6] = new int[3][5][6];
//四维及以上以此类推。

   
1.3 delete/delete[] 用法

    //释放单个int空间
    int *a = new int;
    delete a;
    //释放int数组空间
    int *b = new int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值