type
status
date
slug
summary
tags
category
icon
password
- new是c++的关键字,可以直接调用
malloc是标准库中的一个函数
- new在内存分配成功时,返回的是对象类型的指针(new是符合类型安全性的操作符)
malloc内存分配成功则是返回void*,需要通过强制类型转换将void*指针转换成对象类型的指针
- new内存分配失败时,会抛出bac_alloc异常
malloc分配内存失败时返回NULL
- malloc:申请空间需要显式填入申请内存的大小;
new:无需显式填入申请的内存大小,new会根据new的类型分配内存。
- C++中new和delete符号是可以重载的
而malloc和free是C里的库函数,无法对其进行重载
特征 | new/delete | malloc/free |
分配内存的位置 | 自由存储区 | 堆 |
内存分配失败 | 抛出异常 | 返回NULL |
分配内存的大小 | 编译器根据类型计算得出 | 显式指定字节数 |
处理数组 | 有处理数组的new版本new[] | 需要用户计算数组的大小后进行内存分配 |
已分配内存的扩张 | 不支持 | 使用realloc完成 |
分配内存时内存不足 | 可以指定处理函数或重新制定分配器 | 无法通过用户代码进行处理 |
是否可以重载 | 可以 | 不可以 |
构造函数与析构函数 | 调用 | 不调用 |
- Author:Albert1x
- URL:https://albert-1x.top//article/new%E5%92%8Cmalloc
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!