CC++中的malloc、calloc

CC++中的malloc、calloc,第1张

1、malloc
void* malloc(std::size_t size);

分配size个字节的未初始化空间,分配成功会返回分配内存的第一个地址的指针;如果失败,则返回空指针。

  • 头文件:或< cstdlib >
  • 分配未初始化的空间
  • 释放:
std::free()
std::realloc()
2、calloc
void* calloc(std::size_t num, std::size_t size);

为大小为size的num个对象分配内存,并将其初始化为0。
如果分配成功,返回一个指向第一个字节的指针。

  • 头文件:或< cstdlib >
  • 初始化 为 0;
  • 释放:
std::free()
std::realloc()
3、补充
  • malloc不会初始化,calloc会初始化
  • 在某些 *** 作系统中,malloc返回的指针只有在程序实际使用时才得到实际内存的支持。calloc会初始化为0,在使用calloc时就会有RAM(或交换)支持分配。
  • malloc和calloc返回类型为“void *”,C编译器会隐式地将“void *”转换为需要的类型,但C++编译器不会 ,需要显示地转换。
    举例:
    xx.c
#include 

int main (void) 
{
    int *arr1, *arr2;
    arr1 = malloc(3 * sizeof(int));
    arr2 = calloc(3, sizeof(int));

    arr1[0] = 0;

    free(arr1);
    free(arr2);

	return 0;
}

xx.cpp

#include 

int main (void) 
{
    int *arr1, *arr2, *arr3;
    arr1 = static_cast (malloc(3 * sizeof(int)));
    arr2 = (int *)(malloc(3 * sizeof(int)));

    arr3 = (int *)(calloc(3, sizeof(int)));

    free(arr1);
    free(arr2);
    free(arr3);

    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/786060.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-04
下一篇2022-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存