发布于: 2023-10-9最后更新: 2023-10-9字数 00 分钟

new和malloc区别

newmalloc 都是用于在 heap(堆)中分配内存的,但它们之间存在一些重要的区别:
  1. 来源new 是 C++ 中的运算符,而 malloc 是 C 的函数。
  1. 构造和析构new 不仅分配内存,还会调用对象的构造函数来初始化对象。当使用 delete 释放内存时,它还会调用对象的析构函数。而 malloc 只是简单地分配一块内存,不会调用任何构造函数或析构函数。
  1. 类型安全new 会返回正确的类型,不需要类型转换。而 malloc 返回的是 void*,需要进行类型转换。
  1. 错误处理:如果 new 无法分配内存(例如,内存不足),它会抛出 std::bad_alloc 异常(除非你使用了 nothrow 版本的 new,那样的话它会返回 nullptr)。而 malloc 在无法分配内存时只会返回 NULL(或 nullptr 在 C++ 中)。
  1. 内存分配大小new 会自动计算需要分配的内存大小,而 malloc 需要显式地提供字节数。
以下是两者的使用示例:
使用 new
使用 malloc