new和malloc的区别

1. new是C++的操作符,不用引入头文件

    malloc是C的库函数,需要引入库函数头文件 #include<stdlib.h>或者#include<malloc.h>

    malloc:动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址

2. new分配内存无须传入内存块的大小,可自动计算所需要大小,正确分配内存则返回指定对象类型的指针,比较安全。分配失败则抛出一个   bad_alloc异常;

    而malloc分配内存须知内存得到大小(字节),分配正确返回void*类型指针,需强制转换为我们需要的类型。分配失败则返回NULL指针。

3. new/delete可调用构造函数和析构函数

    而malloc/free只分配或释放内存,并不能对所得的内存进行初始化

4. new不能重新分配内存,而malloc可使用calloc重新分配内存

5. new操作符从自由存储区上为对象动态分配内存空间;而malloc从堆上动态分配内存。

6. new可重载,malloc不可重载。

7. new可以给数组分配内存;而malloc不可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值