C语言 马洛克等价物



自从我为微控制器编写以来,它一直是白色的,我正在尝试重构一些代码以在这样的设备上工作,用C。

我有一行代码:

Pieces = calloc(ARRAYSIZE, sizeof(struct piece));

http://www.cplusplus.com 指出,卡洛克:

为 num 元素数组分配一个内存块,每个元素的大小字节长

那么等效的malloc操作将是:

Pieces = Malloc(ARRAYSIZE*sizeof(struct piece));
忽略位尚未

设置为 0,这不是差不多吗?还是我必须为 ARRAYSIZE 时间分配一个内存块?

希望你能帮到忙。

使calloc(x,y)malloc(x*y)不同的是以下事实:(1(前一个分配的大小是xy的算术乘积,即使该值将超过SIZE_MAX [通常,实现会为此类分配请求返回空指针,但如果实现可以以某种方式满足请求, 标准将允许它这样做];(2( 存储将被清除,并且可以在没有 UB 的情况下读取,因为任何类型都是所有位零是合法值的 [在大多数平台上,所有类型都符合条件,但标准将允许全位零成为指针或浮点类型的陷阱值]。

最新更新