您是否抛出了Malloc的结果

Do you cast the result of malloc?

本文关键字:Malloc 结果 是否      更新时间:2023-10-16

在这个问题中,有人在评论中建议我不应该施放 malloc i.e 的结果::

int *sieve = malloc(sizeof(int)*length);

而不是:

int *sieve = (int *)malloc(sizeof(int)*length);

为什么会这样?

编辑
标记为重复,因为我研究不够。

在C中,您可以将void*malloc的返回类型)隐式转换为任何其他指针类型。因此,不需要演员阵容,被认为是很好的C风格。

在C 中,您不能隐式从void*转换为任何其他指针类型,因此需要铸件。也就是说,在C 中,您几乎应该肯定使用newdelete而不是malloc,因为它们更易于使用,可以与构造函数和破坏者一起使用,等等。

希望这会有所帮助!