分配(calloc)和马洛克(malloc)的区别

在编程中,有必要存储数据。数据存储在存储器中。这些内存位置称为变量。每个变量都有特定的类型。它们可以是整数、浮点、双精度、字符等。还有一些数据结构可以存储相同类型元素的固定大小的顺序集合。它是一个数组。程序员必须声明数组大小。如果程序员声明五个元素的整数数组,则不可能为大于声明大小的索引赋值。内存分配是固定的,不能在运行时更改。另一种内存分配方法是动态内存分配。动态内存分配有助于在需要时分配更多内...

分配(calloc)和马洛克(malloc)的区别

 

在编程中,有必要存储数据。数据存储在存储器中。这些内存位置称为变量。每个变量都有特定的类型。它们可以是整数、浮点、双精度、字符等。还有一些数据结构可以存储相同类型元素的固定大小的顺序集合。它是一个数组。程序员必须声明数组大小。如果程序员声明五个元素的整数数组,则不可能为大于声明大小的索引赋值。内存分配是固定的,不能在运行时更改。另一种内存分配方法是动态内存分配。动态内存分配有助于在需要时分配更多内存,必要时释放内存。<stdlib.h>头文件有四个用于动态内存分配的函数。calloc和malloc就是两个这样的函数。calloc和malloc之间的关键区别在于,calloc分配内存并将分配的内存块初始化为零,而malloc分配内存,但不会将分配的内存初始化为零。访问calloc中的内容将得到零,但是malloc将给出一个垃圾值。

目录

1. 概述和主要区别
2.什么是calloc
3. 什么是malloc
4. calloc和malloc的相似性
5. 并列比较——表格形式的calloc与malloc
6. 摘要

什么是分配(calloc)?

内存分配是为正在执行的程序分配内存的过程。有时需要改变内存的大小。因此,使用动态内存分配。它是用指针完成的。指针是保存另一个变量地址的引用变量。

分配(calloc)和马洛克(malloc)的区别

图01:calloc和malloc

calloc代表“连续分配”。它分配相同大小的多个内存块。calloc的语法如下。需要两个参数。它们是块的数量和每个块的大小。函数calloc返回一个空指针,因此使用cast运算符根据所需的数据类型返回指针类型。

void*calloc(大小数字,大小大小大小);

参考下面的简单C程序。

#包括

#包括

内部主(){

int ptr*=(int*)calloc(20,sizeof(int));

如果(ptr==NULL){

printf(“内存未分配”);

}

其他{

printf(“内存已分配”);

}

返回0;

}

根据上述程序,分配可容纳20个元素的连续存储器块。每个都有整数大小。使用sizeof(int)是因为整型因编译器而异。

如果内存分配成功,它将返回内存块的基址。这意味着指针ptr现在指向该内存块的基址。所有分配的区域都初始化为零。它将打印内存分配消息。如果内存分配不成功,它将返回空指针。因此,它会打印内存未分配的消息。

什么是马洛克(malloc)?

malloc函数用于在内存中分配所需的字节量。malloc的语法如下。大小表示所需的内存(以字节为单位)。

void*malloc(大小);

函数malloc返回一个空指针,因此使用cast运算符根据所需的数据类型返回指针类型。

参考下面的带有malloc函数的简单C程序。

#包括

#包括

内部主(){

int ptr*=(int*)malloc(10*sizeof(int));

如果(ptr==NULL){

printf(“内存未分配”);

}

其他{

printf(“内存已分配”);

}

返回0;

}

根据上述程序,将分配内存块。指针指向已分配内存的起始地址。返回的指针被转换为整数类型。如果内存已分配,它将打印内存已分配消息。如果没有分配内存,则返回空指针。因此,内存未分配消息将被打印。

分配(calloc)和马洛克(malloc)的共同点

  • 这两个函数都在头文件<stdio.h>中声明。它是标准库头文件。
  • 这两个函数都用于动态内存分配。
  • calloc和malloc返回的指针应强制转换为特定类型。
  • 在成功的内存分配中,这两个函数都将返回一个带有内存块基址的指针。
  • 如果内存分配不成功,将返回空指针。

分配(calloc)和马洛克(malloc)的区别

卡洛克vs马洛克
calloc是C语言stdlib.h头文件中用于动态内存分配的函数,它分配特定数量的字节并将其初始化为零。 malloc是C语言stdlib.h头文件中用于动态内存分配的函数,它分配特定数量的字节。
意义
calloc代表连续分配。 malloc代表内存分配。
语法
calloc的语法类似于void*calloc(size\u tu num,size\t size); malloc的语法类似于void*malloc(size_t_size);。
参数个数
calloc接受两个参数。它们是一些块和每个块的大小。 malloc接受一个论点。它是一个字节数。
速度
calloc比malloc花费的时间稍长。这是因为额外的一步是将分配的内存初始化为零。 malloc比calloc快。

总结 - 分配(calloc) vs. 马洛克(malloc)

在使用数组的静态内存分配中,内存是固定的。如果存储的元素很少,那么剩余的内存将被浪费。当分配的内存小于所需内存时,也可能导致错误。因此,使用动态内存分配。在C语言中,calloc和malloc提供了动态内存分配。calloc和malloc的区别在于,calloc分配内存并将分配的内存块初始化为零,而malloc分配内存但不将内存块初始化为零。Malloc接受两个参数,而calloc接受两个参数。

下载calloc vs malloc的pdf文件

你可以下载这篇文章的PDF版本,并根据引文说明离线使用。请在这里下载与malloc版本之间的差异

引用

  • 发表于 2020-10-24 03:58
  • 阅读 ( 150 )
  • 分类:IT

你可能感兴趣的文章

投资回报率(roic)和洛克(roce)的区别

...回报率(roic)? 投资回报率(ROIC)是一种评估公司将资本分配到盈利投资的能力的指标。换言之,这表明企业如何利用资金创造收入。ROIC计算如下。 ROIC=(净收入-股息)/使用的资本 净收入-财政年度总收益 股息——从利润中支...

  • 发布于 2020-10-10 08:57
  • 阅读 ( 387 )

静止的(static)和动态内存分配(dynamic memory allocation)的区别

关键区别–静态内存分配与动态内存分配 在编程中,有必要存储计算数据。这些数据存储在存储器中。在计算机程序设计中用来存储数据的存储器被称为变量。变量具有特定的数据类型。因此,分配内存来运行程序。内存可...

  • 发布于 2020-10-11 12:09
  • 阅读 ( 1005 )

c(c)和目标c(objective c)的区别

...指示编译器包含头文件“stdio.h”。 C有指针。动态内存分配是一个基本概念。指针是存储另一个变量地址的变量。与C或Java等编程语言不同,C没有自动垃圾回收器。因此,程序员应该自己进行动态内存分配。动态内存管理的&amp;...

  • 发布于 2020-10-16 06:52
  • 阅读 ( 258 )

python(python)和c语言(c language)的区别

...系统和网络驱动程序。 在C语言中,程序员的任务是自己分配内存。C有calloc()、malloc()等函数用于动态内存分配。通常,一旦程序完成执行,操作系统就会释放分配的内存。使用free()函数释放分配的内存是一个很好的C编...

  • 发布于 2020-10-24 05:03
  • 阅读 ( 298 )

斑马(zebra)和马(horse)的区别

斑马vs马 马的科学名称是马科蕨类。它是一种有蹄哺乳动物,是现存的七种马科的亚种。在过去的4500至5500万年里,马已经从一种小的多趾动物发展成一种大的单足动物。驯养马大约始于公元前4000年。 “斑马”一词来源于古老...

  • 发布于 2021-06-22 13:56
  • 阅读 ( 357 )

小马(pony)和马(horse)的区别

小马vs马 区分小马和马是很容易的。马与小马的主要区别在于身高。小马比马矮。当小马的高度达到14.2手(通常用手来确定马和小马的高度)时,马的高度超过14.2手,大部分是15.2手。 这不仅是因为小马和马的身高不同,而且...

  • 发布于 2021-06-23 18:11
  • 阅读 ( 415 )

马洛克(malloc)和新的(new)的区别

...在于计算机语言领域,经常被计算机程序员用于动态内存分配。 两者之间的基本区别是,C语言中存在Maloc,而新是C++语言的一个特定特征。Malloc也是一个函数(对于程序员来说,它需要一些时间来执行),而new是一个操作符程...

  • 发布于 2021-06-23 19:10
  • 阅读 ( 194 )

消沉(doldrums)和马纬度(horse latitudes)的区别

萧条与马的纬度 低谷和马纬度是地球上的海洋区域。具体来说,低谷是赤道附近的海洋带。该地区的特点是几乎没有风。在过去的几个世纪里,这种无风一直是海洋勘探中的一个问题,因为如果没有风,船只就不能移动。 在...

  • 发布于 2021-06-24 06:40
  • 阅读 ( 273 )

C(c)和嵌入式c(embedded c)的区别

...的任务。此外,当用C语言编写程序时,程序员必须自己分配内存。有这样的函数,malloc等,动态分配内存。他可以使用这些函数和指针来执行动态内存分配。 什么是嵌入式c(embedded c)? 嵌入式系统是一种能够执行一个或多个功...

  • 发布于 2021-07-01 09:27
  • 阅读 ( 282 )

C(c)和C++(c++)的区别

...E、catch、最后块)。 动态内存管理 C使用calloc、malloc函数分配内存,使用free函数释放内存。C++使用新的操作符分配内存和删除操作符来释放内存。所以,这是C和C++的另一个区别。 默认头文件 C的默认头文件是STDIO.H文件,而默认...

  • 发布于 2021-07-01 12:20
  • 阅读 ( 231 )
HXD01FF02
HXD01FF02

0 篇文章

相关推荐