当前位置:首页 C++ > 正文

c/c++中new、malloc 、 calloc、realloc的区别

作者:野牛程序员:2024-01-03 14:24:47 C++阅读 2416

newmalloccallocrealloc是在C++和C语言中用于动态内存分配的关键字或函数。

  1. new

    • 语言: C++

    • 用途: new是C++中的运算符,用于在堆上动态分配内存并返回相应类型的指针。它会调用对象的构造函数。

    • 示例:

      int *ptr = new int; // 动态分配一个整数的内存

  2. malloc

    • 语言: C

    • 用途: malloc是C语言中的函数,用于在堆上分配一定数量的字节并返回void指针。需要手动计算分配的内存空间大小。

    • 示例:

      int *ptr = (int*)malloc(sizeof(int)); // 动态分配一个整数的内存
  3. calloc

    • 语言: C

    • 用途: calloc是C语言中的函数,用于在堆上分配一定数量的元素,每个元素的大小由参数指定,并返回void指针。与malloc不同,calloc会初始化分配的内存为零。

    • 示例:

      int *ptr = (int*)calloc(5, sizeof(int)); // 动态分配包含5个整数的内存,初始化为零
  4. realloc

    • 语言: C

    • 用途: realloc是C语言中的函数,用于更改之前由malloccalloc分配的内存大小。它接受一个已分配内存的指针和新的大小,并返回指向重新分配内存的指针。

    • 示例:

int *ptr = (int*)malloc(5 * sizeof(int)); // 动态分配包含5个整数的内存
ptr = (int*)realloc(ptr, 10 * sizeof(int)); // 重新分配内存,现在包含10个整数

总体而言,newmalloc/calloc都用于在堆上动态分配内存,但new是C++中的运算符,提供了更高级的功能,包括对象构造。malloccalloc是C语言中的函数,更底层,需要手动管理内存大小和初始化。realloc用于更改已分配内存的大小。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击