new和malloc的区别

  1. 语法和返回类型:
  • new:
    • new 是C++中的关键字,用于动态分配内存并返回相应类型的指针。
    • new 返回的是具体类型的指针,不需要进行类型转换。
  • malloc:
    • malloc 是C语言中的函数,用于分配指定字节数的内存块。
    • malloc 返回的是void*类型的通用指针,需要进行类型转换。
  1. 头文件:
  • new:
    • 不需要包含特定的头文件。
  • malloc:
    • 需要包含 <stdlib.h> 头文件。
  1. 构造函数的调用:
  • new:
    • 在使用 new 分配内存时,会调用对象的构造函数。
  • malloc:
    • malloc 只是分配内存,不会调用对象的构造函数,适用于C语言的内存分配。
  1. 额外信息:
  • new:
    • new 是操作符,不仅仅用于内存分配,还可以调用对象的构造函数,因此可以确保对象被正确地初始化。
  • malloc:
    • malloc 只是简单地分配内存,不涉及对象的构造。
  1. 错误处理:
  • new:
    • 如果 new 无法分配所需的内存,会抛出 std::bad_alloc 异常。
  • malloc:
    • 如果 malloc 无法分配所需的内存,会返回 NULL,需要手动检查分配是否成功。
图片[1]-new和malloc的区别-不念博客

例子:

使用 new 分配和初始化一个整数数组:

int* arr = new int[5]; // 返回类型是 int*

使用 malloc 分配一个整数数组:

int* arr = (int*)malloc(5 * sizeof(int)); // 返回类型是 void*
© 版权声明
THE END