gpt4 book ai didi

c - calloc(4, 6) 和 calloc(6, 4) 一样吗?

转载 作者:太空狗 更新时间:2023-10-29 16:20:45 31 4
gpt4 key购买 nike

我是一名初学者 C 程序员,我认为情况会是这样,但如果可能的话,我希望得到一些肯定。

如果它们相同,为什么不只取一个参数呢?

最佳答案

calloc(a, b)calloc(b, a) 之间没有真正的区别,尽管它们都分配相同数量的空间并填充它适本地。 block 中元素的对齐不会进入它,不需要填充,因为你明确说明了事物的“大小”是什么(任何填充都可以通过使用 来控制sizeof 在第二个参数中。

就为什么要使用 calloc 而不是 malloc 而言,人们经常使用分配例程为一组项目分配空间,因此 calloc( ) 允许很好地指定它。因此,例如,如果您想要空间容纳 100 个整数或 20 个您自己的结构:

int *pInt = calloc (100, sizeof(int));
tMyStruct *pMyStruct = calloc (20, sizeof(tMyStruct));

这段代码实际上看起来比等效的 malloc() 调用稍微“漂亮”:

int *pInt = malloc (100 * sizeof(int));
tMyStruct *pMyStruct = malloc (20 * sizeof(tMyStruct));

不过,对于经验丰富的 C 编码人员来说,并没有真正的区别(当然除了零初始化之外)。

我不得不说我从未在野外使用过 calloc,因为我几乎总是在创建一个 struct,其中零没有意义。我更喜欢手动初始化所​​有字段,以确保获得所需的值。

关于c - calloc(4, 6) 和 calloc(6, 4) 一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/501839/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com